dev-euw.omnichannel.tescocloud.com
Open in
urlscan Pro
13.107.213.45
Public Scan
URL:
https://dev-euw.omnichannel.tescocloud.com/
Submission: On January 19 via automatic, source certstream-suspicious — Scanned from DE
Submission: On January 19 via automatic, source certstream-suspicious — Scanned from DE
Form analysis
0 forms found in the DOMText Content
Light Dark * Summary * Total Requests 52 * Failed Tests 0 * Skipped Tests 0 MORPHEUS_TEST_RESULTS MONDAY, 26 DECEMBER 2022 07:39:09 TOTAL ITERATIONS 1 TOTAL ASSERTIONS 59 TOTAL FAILED TESTS 0 TOTAL SKIPPED TESTS 0 -------------------------------------------------------------------------------- FILE INFORMATION Collection: Sponsored-media Regression Tests Environment: Sponsored Media TIMINGS AND DATA Total run duration: 7.2s Total data received: 47.55KB Average response time: 118ms Summary Item Total Failed Requests 52 0 Prerequest Scripts 40 0 Test Scripts 50 0 Assertions 59 0 Skipped Tests 0 - -------------------------------------------------------------------------------- Go To Top THERE ARE NO FAILED TESTS Go To Top THERE ARE NO SKIPPED TESTS Go To Top Expand Folders Expand Requests 1 ITERATION AVAILABLE TO VIEW * 1 ITERATION 1 SELECTED Sponsored Media - Events Reporting / Report impression - 1 Request in the folder Iteration: 1 - Ad served REQUEST INFORMATION Request Method: POST Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/v1/reporting/events RESPONSE INFORMATION Response Code: 204 - No Content Mean time per request: 339ms Mean size per request: 0B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:4a96c738-0861-403d-a2a3-722725ec07da Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJRRUw5NjJReGlWX3FfZHV3Vm9XXzZsdHNDcTFXaXRMS1phbnIiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQyLCJuYmYiOjE2NzIwNDAzNDIsImV4cCI6MTY3MjA0Mzk0Miwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.B7BYxd9xjawrSZ9lLzm3ouBMiy3LasMyEyxqrmDL3vgS5Da4ZG4N780Srle6DKV7Y6JBBfLOzgMRrszbBKgaeS-HzIPyph0brtVx-OGRPpjnkbtmONBO4bQZPtjVDCSnl5yXGli1i7KD8-4L8Lc6kcqJKGC2uzvyX_hlAYHz_Okeh0Vmomm8huGOR22e5Fq26PdbMKDAZOXFD9Mrkg4dj7ZqtNMmgRoyk2Zx_ibwkBoat1sGBUx670WergmfzOPjrPVKYNe-F5Il5GMVFO86lbB8vUXKlBvB4vPBG1lcubrtOwM5zUlaP40fyydMBqNW0_2fnOWOk1BsVl83FhYLxQ Content-Type application/json User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 15c391c1-5c88-4d65-a47f-f9f72236139f Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive Content-Length 529 REQUEST BODY { "bertieType": "renderedContentOp", "bertieVersion": "6.0.1", "bertieTimeStamp": "2017-06-02T12:36:02.001Z", "uisReceivedTimestamp": "2017-06-02T12:36:02.001Z", "atrc": "1234-acbde-12345", "content": [ { "componentName": "sponsored", "panel": [ { "product": { "adId": "1234adidhere456789", "tpnb": "50502269" } }, { "product": { "adId": "1234adidhere456789", "tpnb": "50502268" } }, { "product": { "adId": "1234adidhere456789", "tpnb": "50502267" } }, { "product": { "adId": "1234adidhere456789", "tpnb": "50502266" } } ] } ] } Copy to Clipboard RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:03 GMT Content-Type application/json; charset=utf-8 Connection keep-alive TraceId postman:sponsored-media:4a96c738-0861-403d-a2a3-722725ec07da Cache-Control no-cache Content-Language en-GB RESPONSE BODY NO RESPONSE BODY FOR THIS REQUEST TEST INFORMATION Search: NamePassedFailedSkipped Body is empty 3 0 0 Status code is 204 3 0 0 Total600 TEST FAILURE Test NameAssertion Error Sponsored Media - Events Reporting / Report click - 1 Request in the folder Iteration: 1 - Ad clicked REQUEST INFORMATION Request Method: POST Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/v1/reporting/events RESPONSE INFORMATION Response Code: 204 - No Content Mean time per request: 685ms Mean size per request: 0B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:cf0089d5-00ee-4d3a-aca8-55f0285c7031 Authorization Bearer IDTYRATv2v2d0b2tlbklkeCRsbXBkTXp5blpqZHBIeU0xMEtfWWExdHNkeVRla1Fic1hFMzZmdXNlcklkUK_H2WZtNEjeqYwiaV6TaJZoY2xpZW50SWR4JGFmYzdkOTY2LTZkMzQtNDhkZS1hOThjLTIyNjk1ZTkzNjg5Nmhpc3N1ZWRBdMSCKBsXNEfVXVi_QGl2YWxpZEZyb23EgigbFzRH1V1Yv0BuZXhwaXJhdGlvblRpbWXEgigbFzRLG44RX0Bmc2NvcGVzgmhpbnRlcm5hbGZwdWJsaWNvY29uZmlkZW5jZUxldmVsDGlzZXNzaW9uSWT2ZWtleUlk9nBoYXNGb3JtZXJVc2VySWRz9GhhdWRpZW5jZfb_~jXx__4DoYv0MvTMKM5JjQQqdjseB-_P4pGnSVUK16Oc Content-Type application/json User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 55581687-a5f7-4e70-bd71-06b324e76318 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive Content-Length 393 REQUEST BODY { "bertieType": "contentInteractOp", "bertieVersion": "6.0.1", "bertieTimeStamp": "2017-06-02T12:36:02.001Z", "uisReceivedTimestamp": "2017-06-02T12:36:02.001Z", "atrc": "1234-acbde-12345", "interactionType": "sponsored:citrus", "basketId": "abc-1234-efg-567", "content": [ { "componentName": "sponsored", "panel": [ { "product": { "adId": "1234adidhere456789", "tpnb": "50502269" } } ] } ] } Copy to Clipboard RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:04 GMT Content-Type application/json; charset=utf-8 Connection keep-alive TraceId postman:sponsored-media:cf0089d5-00ee-4d3a-aca8-55f0285c7031 Cache-Control no-cache Content-Language en-GB RESPONSE BODY NO RESPONSE BODY FOR THIS REQUEST TEST INFORMATION Search: NamePassedFailedSkipped Body is empty 3 0 0 Status code is 204 3 0 0 Total600 TEST FAILURE Test NameAssertion Error Sponsored Media - Events Reporting / Report addition to basket - 1 Request in the folder Iteration: 1 - Sponsored product added to basket REQUEST INFORMATION Request Method: POST Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/v1/reporting/events RESPONSE INFORMATION Response Code: 204 - No Content Mean time per request: 325ms Mean size per request: 0B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:d1a5121d-82bf-4908-a868-88308dd7b868 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI3UkVjMUxHQ09VSzU4ZXpfMzVVN1B0X1IxMDVOTF9LZ2tlUGgiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ0LCJuYmYiOjE2NzIwNDAzNDQsImV4cCI6MTY3MjA0Mzk0NCwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.OLi8P-KJX6Rvh-UA0QZdbo5caj26tRl98x05bo0hS0r_vvfYAJtXdCZ-tyxTCTMR7nuxEOgl-UVXGnufflh0fEPGnyH2MgsJITDvoiTfW20-u8nuENH7r2orho9DedyZJ9YiaViqdVvELf3_V5gJ7e6oYAJ-m5S1vq2c945nzYs2TRVPrF9mYIExyOOAENXkgrtm4Roo44vcJrm-Qchj0DU9HYgx-d_A4ShMwo-OHu3kpAysC_AJtGYBcSWqNYctz7Pj1YA8y6eJfACvdJ8qnxxvHunYTcP5rsJbA5fgN5EoxKpalzPUwLY1ZIECl4DPXEhdzmR7rXyEqjA-MBAcqA Content-Type application/json User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 84a6120f-ae84-4f5d-ade3-32de1fe70667 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive Content-Length 334 REQUEST BODY { "bertieType": "basketOp", "bertieVersion": "6.0.1", "bertieTimeStamp": "2017-06-02T12:36:02.001Z", "uisReceivedTimestamp": "2017-06-02T12:36:02.001Z", "atrc": "1234-acbde-12345", "interactionType": "add", "basketId": "0123456", "product": [ { "tpnb": "50502269", "adId": "1234adidhere456789" } ], "identifier": "sponsored:citrus" } Copy to Clipboard RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:05 GMT Content-Type application/json; charset=utf-8 Connection keep-alive TraceId postman:sponsored-media:d1a5121d-82bf-4908-a868-88308dd7b868 Cache-Control no-cache Content-Language en-GB RESPONSE BODY NO RESPONSE BODY FOR THIS REQUEST TEST INFORMATION Search: NamePassedFailedSkipped Body is empty 2 0 0 Status code is 204 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Sponsored Media - Health and API Maturity / Status - 1 Request in the folder Iteration: 1 - Status REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_status RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 11ms Mean size per request: 68B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:0d08c3ce-550d-49d8-b3d3-bee551498c48 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJjWGJPMnltOVRxVVRqQTV5MTBNNm94VUhrSXJtWTlUeDJlT2siLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ1LCJuYmYiOjE2NzIwNDAzNDUsImV4cCI6MTY3MjA0Mzk0NSwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.X2jnA6hFID7-4kUeBiYC5k03-uMfPvGd_2309YTWtKx7_KR-W-U4YWAP6u8Mr4rJg97WjNPu4MFroEZTzKvSQiHMybXfQ050By_fX9kAA0D4ZOE7hDZlOtLyb15y3MI3cZ-HUheIgmZpJ0KXcqPGh3wtgqGya5HWglPYPn5_d9bGdmVWoypPdrn-x7c7-_dT-k1BzkSIxlSe2M0aaWQOfWWgDxcGC-I_DMD9nOTlxwrbvMyt01_ZnbNuL8cbNZg0eJZCmh3r08iWyZXhsxmB8wFdNJ-JRSYh9l6k0RfpLRjIKpVR3t4nlAijVm8qpuyZmystV34yd_DYpz_ePJRzXA User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 50651237-1b99-4496-aa4d-4fc41dcf6e7c Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:05 GMT Content-Type application/json; charset=utf-8 Content-Length 68 Connection keep-alive TraceId postman:sponsored-media:0d08c3ce-550d-49d8-b3d3-bee551498c48 Cache-Control no-cache Content-Language en-GB RESPONSE BODY { "version": "0.0.1", "status": "Ok", "statusCode": 200, "message": "alive" } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Sponsored Media - Health and API Maturity / Healthcheck - 2 Requests in the folder Iteration: 1 - Healthcheck REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_healthcheck RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 13ms Mean size per request: 359B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:c1cadf48-dc93-46a1-af55-557bd6628346 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJIdmxwQ1ZCNGYzTmNiNHhSRU1NWjc4Uk9tVTFLUDZEd0JxS0wiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ1LCJuYmYiOjE2NzIwNDAzNDUsImV4cCI6MTY3MjA0Mzk0NSwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.OxFTBj05wLdVrtTQNgIqtUeSQdsyBHav8Sh8PFQ00u5uhinCQuj2hgtSXHg4P4rlze_r53xINP1zWUXTKMG4gkCksqCnO518jreyJPoVKCDNihx8IGNiiA0lm4ckb-1FWb006bkUjs66QXq-L9ayXvrXK9QLrYL6Y0Uv5lR_ilekd2tuuh_X5GCPhnDYMZnyk1eqoYhVfrJICJOF2E1swi-xyb2KsIGCTrwa85rOac8UIOLA-sOXWe7a16gdKglL8a-4yF1Frh75utmul8nAWH72QsOf5zR9wIwAN02SqzxiKiFSqNr8mnkXZS5fCLrdxP5mTDCyGNvKMmv7Z8RDuQ User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token aa58d20b-d1bd-4f13-83e0-91e64b2ac1cd Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:05 GMT Content-Type application/json; charset=utf-8 Content-Length 359 Connection keep-alive TraceId postman:sponsored-media:c1cadf48-dc93-46a1-af55-557bd6628346 Cache-Control no-cache Content-Language en-GB RESPONSE BODY { "status": "Ok", "version": "0.0.1", "component": [ { "name": "IdentityAPI", "description": "Authentication client validation", "status": "Ok", "checked": "2022-12-26T07:38:08.935633635Z", "type": "DEPENDENCY" }, { "name": "CitrusAd", "description": "Ranks products by keyword based on sponsored media", "status": "Ok", "checked": "2022-12-26T07:38:09.116246621Z", "type": "COMPONENT" } ] } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Iteration: 1 - Health REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/health RESPONSE INFORMATION Response Code: 200 - Ok Mean time per request: 11ms Mean size per request: 326B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:05673958-a4a8-4616-9bb4-715742113c3b Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJ4aklNU0JvNmVzUHRMT0NOYzdRcDhNWjJDeWlRanEyd01OQjciLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ1LCJuYmYiOjE2NzIwNDAzNDUsImV4cCI6MTY3MjA0Mzk0NSwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.fW--O1NpL1NJ0a0KKQS4ajE0uIn24QUp1wwehjkVML8I3jCOUaNU5-RA9X71X2ih8zFQeMsJ145pDe5m-_u-Ym857_YXHCZX_NLXgbw1kWvZDFaO7Xwr7srApd-n0LO0TgSHUTknVjlFG8soynTr3f35LiN94qJP_al3Aq9t8sNn5KQ_Ng4wqhsDwpDUgud2uL2WljuxteazslxyhQoekk1Y5WRkOfc1UPbTxB__LmcwyWiMAH73VC0ByLRWCCWxsgN2up86qi7APaocRNnERpEU2KT_N3sBs6eZisnMlkL2X_8EbRpy8lDIaJyVbyLEOe7Gn7vXN5oNzOwtASBp_g User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token d75b3788-96f9-4bb7-b252-6e47dea2de1f Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:05 GMT Content-Type application/json; charset=utf-8 Content-Length 326 Connection keep-alive TraceId postman:sponsored-media:05673958-a4a8-4616-9bb4-715742113c3b Cache-Control no-cache Content-Language en-GB RESPONSE BODY { "name": "sponsored-media", "status": "UP", "details": { "compositeDiscoveryClient()": { "name": "sponsored-media", "status": "UP", "details": { "services": {} } }, "service": { "name": "sponsored-media", "status": "UP" }, "diskSpace": { "name": "sponsored-media", "status": "UP", "details": { "total": 266206101504, "free": 229877415936, "threshold": 10485760 } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Sponsored Media - Health and API Maturity / Interface - 2 Requests in the folder Iteration: 1 - _interface REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 13ms Mean size per request: 11.06KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:96793688-b9a2-440b-b3df-ea82c997c044 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJiUGt3RTU2YnNCUnB0T3hVOE1NQXZtUlJXNDQ1bFRNcUgzRmYiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ1LCJuYmYiOjE2NzIwNDAzNDUsImV4cCI6MTY3MjA0Mzk0NSwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.h6BDAlTgSUuwJpvH_M9x0CcAKmfOwR1sD48Rea1JgUrfflrul-mS02C11siEpEfv9sJEsZpQsYcAzpzG-sXO2_m-uSy3RTtuflLFwLyIu2TlLkxnmfUGO5jBMQs3QLEYFCq1kPEVAOb5YfudLyJ95e7XKEIMGJB9KXC8T5XTABIWbVOGqUmzr3mugZymZ6xmAbnUytshRIVkHVDLgIs0n_JXC0GNgLG7i1Wo9VMNz6Jb29Ovzsy2xMSmFoKnCJwv782t5_-wCcgjdpZVUGJqyu3kzQBQoNgZTDS4n7zegr_1_QHsn4PD324X2FFRALOL5S1xTPDs5qwXNluNZrI_sQ User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 8210a133-919b-4dc6-8ad3-25099a534d2b Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:05 GMT Content-Type application/openapi+json Content-Length 2055 Connection keep-alive TraceId postman:sponsored-media:96793688-b9a2-440b-b3df-ea82c997c044 Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "openapi": "3.0.1", "info": { "title": "Tesco Sponsored Media", "description": "Sponsored media service providing bidding for ads and reporting to ad provider", "contact": { "name": "Recommendations Team", "url": "https://www.tescorecs.com", "email": "05_Technology_6_Recs.OnCall@tesco.com" }, "version": "1.0" }, "servers": [ { "url": "https://dev.uk.tescospmedia.com/sponsored-media" } ], "tags": [ { "name": "API" }, { "name": "Retrieve ads" }, { "name": "Bertie reporting" }, { "name": "Admin API" } ], "paths": { "/_healthcheck": { "get": { "tags": [ "API" ], "summary": "Get health check result for each component/dependency", "description": "Gets health check last known result for each component/dependency", "operationId": "status", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatus" } } } }, "401": { "description": "Authentication error", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/_interface": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePublic", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/_interface/private": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePrivate", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/_status": { "get": { "tags": [ "API" ], "summary": "Get service health check result", "description": "Get service health check result", "operationId": "status_1", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status_1", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/v1/products/ads": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list", "description": "Retrieves list of ads for given search term. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAds", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "searchTerm", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/v1/products/placements/{placement}": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list for Placement", "description": "Retrieves list of ads for given placement. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAdsForPlacement", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "placement", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Placement" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/v1/reporting/events": { "post": { "tags": [ "Bertie reporting" ], "summary": "Reporting Clicks and Impressions", "description": "Bertie sends clicks and impressions to report to Citrus-Ad. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "bertieReporting", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "TraceId", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BertieEvent" } } }, "required": true }, "responses": { "204": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } } }, "components": { "schemas": { "AdProduct": { "required": [ "bid" ], "type": "object", "properties": { "tpnb": { "type": "string", "example": "1234567" }, "adId": { "type": "string", "example": "display_CUh_V2l-Vh7cjqF2TTJTzZ1mx8o3NzMzNjM2" }, "bid": { "type": "number", "example": 1.21 } } }, "BertieContent": { "required": [ "componentName", "panel" ], "type": "object", "properties": { "componentName": { "minLength": 1, "type": "string", "example": "sponsored" }, "panel": { "type": "array", "items": { "$ref": "#/components/schemas/BertiePanelItem" } } } }, "BertieEvent": { "required": [ "bertieType", "content", "product", "uisReceivedTimestamp" ], "type": "object", "properties": { "bertieType": { "$ref": "#/components/schemas/BertieEventType" }, "identifier": { "type": "string", "nullable": true, "example": "sponsored:citrus" }, "interactionType": { "type": "string", "nullable": true, "example": "add" }, "basketId": { "type": "string", "nullable": true, "example": "0123456" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/BertieContent" } }, "product": { "type": "array", "items": { "$ref": "#/components/schemas/BertieProduct" } }, "bertieTimeStamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2021-06-29T08:36:02Z" }, "uisReceivedTimestamp": { "type": "string", "format": "date-time", "example": "2021-06-29T08:36:02Z" } } }, "BertieEventType": { "type": "string", "enum": [ "BASKET_ADD_CLICK", "CONTENT_CLICK", "IMPRESSION" ] }, "BertiePanelItem": { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/components/schemas/BertieProduct" } } }, "BertieProduct": { "required": [ "adId", "tpnb" ], "type": "object", "properties": { "adId": { "minLength": 1, "type": "string", "example": "1234adidhere456789" }, "tpnb": { "minLength": 1, "type": "string", "example": "50502269" } } }, "ErrorResponseDto": { "type": "object", "properties": { "code": { "type": "string", "example": "4xx/5xx" }, "type": { "type": "string", "example": "converter.error.message" }, "message": { "type": "string", "example": "listId: cannot be null" }, "traceId": { "type": "string", "example": "list:9c3fc6d7-12fa-4403-b295-5c0b56a57665" } } }, "Health": { "type": "object" }, "HealthStatus": { "required": [ "component", "status", "version" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Status" }, "version": { "type": "string" }, "component": { "type": "array", "items": { "$ref": "#/components/schemas/Health" } } } }, "Placement": { "type": "string", "enum": [ "SEARCH", "CHECKOUT" ] }, "RetrieveAdResponse": { "type": "object", "properties": { "numberToDisplay": { "type": "integer", "description": "number to display", "format": "int32", "example": 2 }, "products": { "allOf": [ { "$ref": "#/components/schemas/AdProduct" }, { "type": "object", "description": "list of ad products" } ] } } }, "Status": { "type": "string", "enum": [ "OK", "FAIL" ] }, "StatusResponse": { "type": "object", "properties": { "version": { "type": "string", "example": "1.0.0" }, "status": { "type": "string", "example": "alive" }, "statusCode": { "type": "integer", "format": "int32", "example": 200 }, "message": { "type": "string", "example": "OK" } } } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Iteration: 1 - _interface/private REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface/private RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 12ms Mean size per request: 12.05KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:e4c2c031-ef95-4968-9ceb-f48b154eef2a Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJ5SEpOZlM4X1pkM1U3ZDZpSmYxSExYTXVsdXlCcnVkTXlxbU0iLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ1LCJuYmYiOjE2NzIwNDAzNDUsImV4cCI6MTY3MjA0Mzk0NSwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.RySqW8b6W_drU__VGvERFeF32HwdrSaYc_Km6cTZf-9Gx3QYBev3f-Av-vyKxBhkFJey92vsxyzI3wHPA9rg05D4ERYZUg6JamimCBnSKTuLcs5iIppq73poTEaPM4O0f1ZPjo_XF2J3BykO0LpUkW1gjTvPYxraYkWfsQf3p8exyyuCEjzKyVAb73QPg5O8GSpKrpe6RR9sz3FaYwSqmZDQhMkm_odRfJxNoFL4ZQiDmZI-RY6G3-1xT8JOT1vfcSB5yPtxUMp--Mo5_DTjk5dRpt5yjrBTrDfWW2gcvkAWDpNZGC8sDvHp6KL4N-X1_menS7BHYybwOjOuLAlShA User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 1d08d183-45e5-4012-befb-d2c733dd6655 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:05 GMT Content-Type application/openapi+json Content-Length 2323 Connection keep-alive TraceId postman:sponsored-media:e4c2c031-ef95-4968-9ceb-f48b154eef2a Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "openapi": "3.0.1", "info": { "title": "Tesco Sponsored Media", "description": "Sponsored media service providing bidding for ads and reporting to ad provider", "contact": { "name": "Recommendations Team", "url": "https://www.tescorecs.com", "email": "05_Technology_6_Recs.OnCall@tesco.com" }, "version": "1.0" }, "servers": [ { "url": "https://dev.uk.tescospmedia.com/sponsored-media" } ], "tags": [ { "name": "API" }, { "name": "Retrieve ads" }, { "name": "Bertie reporting" }, { "name": "Admin API" } ], "paths": { "/_healthcheck": { "get": { "tags": [ "API" ], "summary": "Get health check result for each component/dependency", "description": "Gets health check last known result for each component/dependency", "operationId": "status", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatus" } } } }, "401": { "description": "Authentication error", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePublic", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface/private": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePrivate", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_status": { "get": { "tags": [ "API" ], "summary": "Get service health check result", "description": "Get service health check result", "operationId": "status_1", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status_1", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/ads": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list", "description": "Retrieves list of ads for given search term. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAds", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "searchTerm", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/placements/{placement}": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list for Placement", "description": "Retrieves list of ads for given placement. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAdsForPlacement", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "placement", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Placement" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/reporting/events": { "post": { "tags": [ "Bertie reporting" ], "summary": "Reporting Clicks and Impressions", "description": "Bertie sends clicks and impressions to report to Citrus-Ad. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "bertieReporting", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "TraceId", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BertieEvent" } } }, "required": true }, "responses": { "204": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } } }, "components": { "schemas": { "AdProduct": { "required": [ "bid" ], "type": "object", "properties": { "tpnb": { "type": "string", "example": "1234567" }, "adId": { "type": "string", "example": "display_CUh_V2l-Vh7cjqF2TTJTzZ1mx8o3NzMzNjM2" }, "bid": { "type": "number", "example": 1.21 } } }, "BertieContent": { "required": [ "componentName", "panel" ], "type": "object", "properties": { "componentName": { "minLength": 1, "type": "string", "example": "sponsored" }, "panel": { "type": "array", "items": { "$ref": "#/components/schemas/BertiePanelItem" } } } }, "BertieEvent": { "required": [ "bertieType", "content", "product", "uisReceivedTimestamp" ], "type": "object", "properties": { "bertieType": { "$ref": "#/components/schemas/BertieEventType" }, "identifier": { "type": "string", "nullable": true, "example": "sponsored:citrus" }, "interactionType": { "type": "string", "nullable": true, "example": "add" }, "basketId": { "type": "string", "nullable": true, "example": "0123456" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/BertieContent" } }, "product": { "type": "array", "items": { "$ref": "#/components/schemas/BertieProduct" } }, "bertieTimeStamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2021-06-29T08:36:02Z" }, "uisReceivedTimestamp": { "type": "string", "format": "date-time", "example": "2021-06-29T08:36:02Z" } } }, "BertieEventType": { "type": "string", "enum": [ "BASKET_ADD_CLICK", "CONTENT_CLICK", "IMPRESSION" ] }, "BertiePanelItem": { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/components/schemas/BertieProduct" } } }, "BertieProduct": { "required": [ "adId", "tpnb" ], "type": "object", "properties": { "adId": { "minLength": 1, "type": "string", "example": "1234adidhere456789" }, "tpnb": { "minLength": 1, "type": "string", "example": "50502269" } } }, "ErrorResponseDto": { "type": "object", "properties": { "code": { "type": "string", "example": "4xx/5xx" }, "type": { "type": "string", "example": "converter.error.message" }, "message": { "type": "string", "example": "listId: cannot be null" }, "traceId": { "type": "string", "example": "list:9c3fc6d7-12fa-4403-b295-5c0b56a57665" } } }, "Health": { "type": "object" }, "HealthStatus": { "required": [ "component", "status", "version" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Status" }, "version": { "type": "string" }, "component": { "type": "array", "items": { "$ref": "#/components/schemas/Health" } } } }, "Placement": { "type": "string", "enum": [ "SEARCH", "CHECKOUT" ] }, "RetrieveAdResponse": { "type": "object", "properties": { "numberToDisplay": { "type": "integer", "description": "number to display", "format": "int32", "example": 2 }, "products": { "allOf": [ { "$ref": "#/components/schemas/AdProduct" }, { "type": "object", "description": "list of ad products" } ] } } }, "Status": { "type": "string", "enum": [ "OK", "FAIL" ] }, "StatusResponse": { "type": "object", "properties": { "version": { "type": "string", "example": "1.0.0" }, "status": { "type": "string", "example": "alive" }, "statusCode": { "type": "integer", "format": "int32", "example": 200 }, "message": { "type": "string", "example": "OK" } } } }, "securitySchemes": { "OAuth2": { "type": "oauth2", "description": "Industry Standard OAuth2 Authorization Scheme", "flows": { "clientCredentials": { "tokenUrl": "https://api-ppe.tesco.com/identity/v4/issue-token/token", "scopes": { "public": "Grants access to public API endpoints from the Platform API", "private": "Grants access to Tesco internal (partner, colleague & privilege) API", "internal": "Grants access to platform private API endpoints (only API team)" } } } }, "identity": { "type": "apiKey", "description": "Tesco standard bearer token generated by the Identity API", "name": "Authorization", "in": "header" } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Sponsored Media - Health and API Maturity / Api Docs - 1 Request in the folder Iteration: 1 - Api Docs REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/api-docs RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 64ms Mean size per request: 2.78KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:e213b0c4-d6e8-4606-adef-93d55b722103 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJ6QXdsdGV0X3VrYjQ3NzhYSmFIWWdFRHBhb3FydF9aU0ZoMVAiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ1LCJuYmYiOjE2NzIwNDAzNDUsImV4cCI6MTY3MjA0Mzk0NSwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.C665oHnuRKxBNLHpVwLL9EcOjb1y-_IQW3DTYQ0aC7nu2WJqpSnqfxGTJbtc9ABEePe_CFGBGwkzkvI28ADgLIspHT76gV3WZ9Vj3HdrUDeZ_2OCYI_w62BxRfNx5huHuzd0ibuSB9pVEp2Tz51Cza9XIYt0MKAyxkreBNbS1RLpl4YPMZNVbimfcYKoB27E8-DZAe89NPsFITa7Rnrsf-El1ClZVNbc9ftMhxWhDnaRgeE0zl7cCK9OkujylBguIc9dhaKD6M6xhTdi2lM78jrwisfmGUUWdI9nLE-jWS1PSmPGU80y7_gq-l8_bjbEVk0xTwJVXettJAazRHeuRA User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 6646b5bc-2629-4c04-ab77-7528d952d185 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:05 GMT Content-Type text/html Content-Length 942 Connection keep-alive TraceId postman:sponsored-media:e213b0c4-d6e8-4606-adef-93d55b722103 Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY <!doctype html> <html lang='en'> <head> <meta charset='UTF-8' /> <title>tesco-sponsored-media-1.0</title> <link rel='icon' type='image/png' href='https://unpkg.com/swagger-ui-dist/favicon-32x32.png' sizes='32x32' /> <link rel='icon' type='image/png' href='https://unpkg.com/swagger-ui-dist/favicon-16x16.png' sizes='16x16' /> <script src='https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js'> </script> <script src='https://unpkg.com/swagger-ui-dist/swagger-ui-standalone-preset.js'> </script> <link rel='stylesheet' type='text/css' href='https://unpkg.com/swagger-ui-dist/swagger-ui.css' /> <link rel='stylesheet' type='text/css' href='https://unpkg.com/swagger-ui-themes@3.0.0/themes/3.x/theme-material.css' /> </head> <body> <div id='swagger-ui'> </div> <script> window.onload = function() { const extract = function(v) { return decodeURIComponent(v.replace(/(?:(?:^|.*;\s*)contextPath\s*\=\s*([^;]*).*$)|^.*$/, "$1")); }, cookie = extract(document.cookie), contextPath = cookie === '' ? extract(window.location.search.substring(1)) : cookie, f = contextPath === '' ? undefined : function(system) { return { statePlugins: { spec: { wrapActions: { updateJsonSpec: (oriAction, system) => (...args) => { let [spec] = args; if (spec && spec.paths) { const newPaths = {}; Object.entries(spec.paths).forEach(([path, value]) => newPaths[contextPath + path] = value); spec.paths = newPaths; } oriAction(...args); } } } } }; }, ui = SwaggerUIBundle({ url: 'https://dev.uk.tescospmedia.com/sponsored-media/_interface/private', dom_id: '#swagger-ui', presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ], plugins: [ SwaggerUIBundle.plugins.DownloadUrl, f ], deepLinking: true, layout: "StandaloneLayout", validatorUrl: null }); window.ui = ui; }; </script> </body> </html> Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Sponsored Media - Health and API Maturity / API Maturity Tests - 11 Requests in the folder Iteration: 1 - _interface REQUEST DESCRIPTION Test _interface endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 67ms Mean size per request: 11.06KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId runscope:maturity:42b552a2-8261-4bdf-9dd2-8db89e89f873 Accept application/json Authorization Bearer IDTYRATv2v2d0b2tlbklkeCRZaXlFeU1ZblY5N0ZJeWZhUWIySWYzemRYaW1fcURjUXdpX3NmdXNlcklkUK_H2WZtNEjeqYwiaV6TaJZoY2xpZW50SWR4JGFmYzdkOTY2LTZkMzQtNDhkZS1hOThjLTIyNjk1ZTkzNjg5Nmhpc3N1ZWRBdMSCKBsXNEfV8aSdQGl2YWxpZEZyb23EgigbFzRH1fGknUBuZXhwaXJhdGlvblRpbWXEgigbFzRLHCJdPUBmc2NvcGVzgmhpbnRlcm5hbGZwdWJsaWNvY29uZmlkZW5jZUxldmVsDGlzZXNzaW9uSWT2ZWtleUlk9nBoYXNGb3JtZXJVc2VySWRz9GhhdWRpZW5jZfb_~6XI-93TW-HgI6YJeHOSpNh93WvS6I8sHPY34vR7UB_8 User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token fcbe38ab-c636-4147-8b61-fe4d6996a605 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:05 GMT Content-Type application/openapi+json Content-Length 2055 Connection keep-alive TraceId runscope:maturity:42b552a2-8261-4bdf-9dd2-8db89e89f873 Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "openapi": "3.0.1", "info": { "title": "Tesco Sponsored Media", "description": "Sponsored media service providing bidding for ads and reporting to ad provider", "contact": { "name": "Recommendations Team", "url": "https://www.tescorecs.com", "email": "05_Technology_6_Recs.OnCall@tesco.com" }, "version": "1.0" }, "servers": [ { "url": "https://dev.uk.tescospmedia.com/sponsored-media" } ], "tags": [ { "name": "API" }, { "name": "Retrieve ads" }, { "name": "Bertie reporting" }, { "name": "Admin API" } ], "paths": { "/_healthcheck": { "get": { "tags": [ "API" ], "summary": "Get health check result for each component/dependency", "description": "Gets health check last known result for each component/dependency", "operationId": "status", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatus" } } } }, "401": { "description": "Authentication error", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/_interface": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePublic", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/_interface/private": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePrivate", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/_status": { "get": { "tags": [ "API" ], "summary": "Get service health check result", "description": "Get service health check result", "operationId": "status_1", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status_1", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/v1/products/ads": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list", "description": "Retrieves list of ads for given search term. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAds", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "searchTerm", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/v1/products/placements/{placement}": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list for Placement", "description": "Retrieves list of ads for given placement. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAdsForPlacement", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "placement", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Placement" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } }, "/v1/reporting/events": { "post": { "tags": [ "Bertie reporting" ], "summary": "Reporting Clicks and Impressions", "description": "Bertie sends clicks and impressions to report to Citrus-Ad. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "bertieReporting", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "TraceId", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BertieEvent" } } }, "required": true }, "responses": { "204": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } } } } }, "components": { "schemas": { "AdProduct": { "required": [ "bid" ], "type": "object", "properties": { "tpnb": { "type": "string", "example": "1234567" }, "adId": { "type": "string", "example": "display_CUh_V2l-Vh7cjqF2TTJTzZ1mx8o3NzMzNjM2" }, "bid": { "type": "number", "example": 1.21 } } }, "BertieContent": { "required": [ "componentName", "panel" ], "type": "object", "properties": { "componentName": { "minLength": 1, "type": "string", "example": "sponsored" }, "panel": { "type": "array", "items": { "$ref": "#/components/schemas/BertiePanelItem" } } } }, "BertieEvent": { "required": [ "bertieType", "content", "product", "uisReceivedTimestamp" ], "type": "object", "properties": { "bertieType": { "$ref": "#/components/schemas/BertieEventType" }, "identifier": { "type": "string", "nullable": true, "example": "sponsored:citrus" }, "interactionType": { "type": "string", "nullable": true, "example": "add" }, "basketId": { "type": "string", "nullable": true, "example": "0123456" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/BertieContent" } }, "product": { "type": "array", "items": { "$ref": "#/components/schemas/BertieProduct" } }, "bertieTimeStamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2021-06-29T08:36:02Z" }, "uisReceivedTimestamp": { "type": "string", "format": "date-time", "example": "2021-06-29T08:36:02Z" } } }, "BertieEventType": { "type": "string", "enum": [ "BASKET_ADD_CLICK", "CONTENT_CLICK", "IMPRESSION" ] }, "BertiePanelItem": { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/components/schemas/BertieProduct" } } }, "BertieProduct": { "required": [ "adId", "tpnb" ], "type": "object", "properties": { "adId": { "minLength": 1, "type": "string", "example": "1234adidhere456789" }, "tpnb": { "minLength": 1, "type": "string", "example": "50502269" } } }, "ErrorResponseDto": { "type": "object", "properties": { "code": { "type": "string", "example": "4xx/5xx" }, "type": { "type": "string", "example": "converter.error.message" }, "message": { "type": "string", "example": "listId: cannot be null" }, "traceId": { "type": "string", "example": "list:9c3fc6d7-12fa-4403-b295-5c0b56a57665" } } }, "Health": { "type": "object" }, "HealthStatus": { "required": [ "component", "status", "version" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Status" }, "version": { "type": "string" }, "component": { "type": "array", "items": { "$ref": "#/components/schemas/Health" } } } }, "Placement": { "type": "string", "enum": [ "SEARCH", "CHECKOUT" ] }, "RetrieveAdResponse": { "type": "object", "properties": { "numberToDisplay": { "type": "integer", "description": "number to display", "format": "int32", "example": 2 }, "products": { "allOf": [ { "$ref": "#/components/schemas/AdProduct" }, { "type": "object", "description": "list of ad products" } ] } } }, "Status": { "type": "string", "enum": [ "OK", "FAIL" ] }, "StatusResponse": { "type": "object", "properties": { "version": { "type": "string", "example": "1.0.0" }, "status": { "type": "string", "example": "alive" }, "statusCode": { "type": "integer", "format": "int32", "example": 200 }, "message": { "type": "string", "example": "OK" } } } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _interface and expected a paths field to exist 2 0 0 Called _interface and expected a response time of less than 600ms 2 0 0 Called _interface and expected a status code of 200 in the response 2 0 0 Called _interface and expected an openapi field exists and says '3' in the response body 2 0 0 Total800 TEST FAILURE Test NameAssertion Error Iteration: 1 - _interface/private REQUEST DESCRIPTION Test _interface endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface/private RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 12ms Mean size per request: 12.05KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId runscope:maturity:df1082b6-a814-48bc-b6aa-d64f28609554 Accept application/json Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJOYjY4RUQyVGY5Z2tuNVpIWjNleWNKZU5TYjFCbEVLM01meUEiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.bwIGIwlMlaqle9LKPGFSNsLu6m151v2PXdrORwR99D6NiNacgEICzU85PqJTFaK9DRut84x_AwMJ2SQNJdwz9R-3dkfhABY4pF21kiIpwEJw4cW2Yab8xIHz1SyLN695SB124df4erYZQ-plD0tgWhkXtzF9dHWLuQRmkqxX5s6cFOAP6iWCTmd21wlYoVHl47iJCpXh7yS83dGIxqD4uedSY-rappNNxZ_mzwM9Rto_oSuQi98apnnDHl8U5Wio4kHHvv7I3b0cGQkw_25YZoUcQlIVfoz2skj21ntlzqNcz12afr9XvsALViNxjjvBdtvHGDCPhNUooeebDV1V6w User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token 44b54cb7-074f-4479-99bc-7109b752cf88 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:06 GMT Content-Type application/openapi+json Content-Length 2323 Connection keep-alive TraceId runscope:maturity:df1082b6-a814-48bc-b6aa-d64f28609554 Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "openapi": "3.0.1", "info": { "title": "Tesco Sponsored Media", "description": "Sponsored media service providing bidding for ads and reporting to ad provider", "contact": { "name": "Recommendations Team", "url": "https://www.tescorecs.com", "email": "05_Technology_6_Recs.OnCall@tesco.com" }, "version": "1.0" }, "servers": [ { "url": "https://dev.uk.tescospmedia.com/sponsored-media" } ], "tags": [ { "name": "API" }, { "name": "Retrieve ads" }, { "name": "Bertie reporting" }, { "name": "Admin API" } ], "paths": { "/_healthcheck": { "get": { "tags": [ "API" ], "summary": "Get health check result for each component/dependency", "description": "Gets health check last known result for each component/dependency", "operationId": "status", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatus" } } } }, "401": { "description": "Authentication error", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePublic", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface/private": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePrivate", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_status": { "get": { "tags": [ "API" ], "summary": "Get service health check result", "description": "Get service health check result", "operationId": "status_1", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status_1", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/ads": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list", "description": "Retrieves list of ads for given search term. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAds", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "searchTerm", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/placements/{placement}": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list for Placement", "description": "Retrieves list of ads for given placement. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAdsForPlacement", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "placement", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Placement" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/reporting/events": { "post": { "tags": [ "Bertie reporting" ], "summary": "Reporting Clicks and Impressions", "description": "Bertie sends clicks and impressions to report to Citrus-Ad. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "bertieReporting", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "TraceId", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BertieEvent" } } }, "required": true }, "responses": { "204": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } } }, "components": { "schemas": { "AdProduct": { "required": [ "bid" ], "type": "object", "properties": { "tpnb": { "type": "string", "example": "1234567" }, "adId": { "type": "string", "example": "display_CUh_V2l-Vh7cjqF2TTJTzZ1mx8o3NzMzNjM2" }, "bid": { "type": "number", "example": 1.21 } } }, "BertieContent": { "required": [ "componentName", "panel" ], "type": "object", "properties": { "componentName": { "minLength": 1, "type": "string", "example": "sponsored" }, "panel": { "type": "array", "items": { "$ref": "#/components/schemas/BertiePanelItem" } } } }, "BertieEvent": { "required": [ "bertieType", "content", "product", "uisReceivedTimestamp" ], "type": "object", "properties": { "bertieType": { "$ref": "#/components/schemas/BertieEventType" }, "identifier": { "type": "string", "nullable": true, "example": "sponsored:citrus" }, "interactionType": { "type": "string", "nullable": true, "example": "add" }, "basketId": { "type": "string", "nullable": true, "example": "0123456" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/BertieContent" } }, "product": { "type": "array", "items": { "$ref": "#/components/schemas/BertieProduct" } }, "bertieTimeStamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2021-06-29T08:36:02Z" }, "uisReceivedTimestamp": { "type": "string", "format": "date-time", "example": "2021-06-29T08:36:02Z" } } }, "BertieEventType": { "type": "string", "enum": [ "BASKET_ADD_CLICK", "CONTENT_CLICK", "IMPRESSION" ] }, "BertiePanelItem": { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/components/schemas/BertieProduct" } } }, "BertieProduct": { "required": [ "adId", "tpnb" ], "type": "object", "properties": { "adId": { "minLength": 1, "type": "string", "example": "1234adidhere456789" }, "tpnb": { "minLength": 1, "type": "string", "example": "50502269" } } }, "ErrorResponseDto": { "type": "object", "properties": { "code": { "type": "string", "example": "4xx/5xx" }, "type": { "type": "string", "example": "converter.error.message" }, "message": { "type": "string", "example": "listId: cannot be null" }, "traceId": { "type": "string", "example": "list:9c3fc6d7-12fa-4403-b295-5c0b56a57665" } } }, "Health": { "type": "object" }, "HealthStatus": { "required": [ "component", "status", "version" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Status" }, "version": { "type": "string" }, "component": { "type": "array", "items": { "$ref": "#/components/schemas/Health" } } } }, "Placement": { "type": "string", "enum": [ "SEARCH", "CHECKOUT" ] }, "RetrieveAdResponse": { "type": "object", "properties": { "numberToDisplay": { "type": "integer", "description": "number to display", "format": "int32", "example": 2 }, "products": { "allOf": [ { "$ref": "#/components/schemas/AdProduct" }, { "type": "object", "description": "list of ad products" } ] } } }, "Status": { "type": "string", "enum": [ "OK", "FAIL" ] }, "StatusResponse": { "type": "object", "properties": { "version": { "type": "string", "example": "1.0.0" }, "status": { "type": "string", "example": "alive" }, "statusCode": { "type": "integer", "format": "int32", "example": 200 }, "message": { "type": "string", "example": "OK" } } } }, "securitySchemes": { "OAuth2": { "type": "oauth2", "description": "Industry Standard OAuth2 Authorization Scheme", "flows": { "clientCredentials": { "tokenUrl": "https://api-ppe.tesco.com/identity/v4/issue-token/token", "scopes": { "public": "Grants access to public API endpoints from the Platform API", "private": "Grants access to Tesco internal (partner, colleague & privilege) API", "internal": "Grants access to platform private API endpoints (only API team)" } } } }, "identity": { "type": "apiKey", "description": "Tesco standard bearer token generated by the Identity API", "name": "Authorization", "in": "header" } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _interface/private and expected a paths field to exist 2 0 0 Called _interface/private and expected a response time of less than 600ms 2 0 0 Called _interface/private and expected a status code of 200 in the response 2 0 0 Called _interface/private and expected an openapi field exists and says '3' in the response body 2 0 0 Total800 TEST FAILURE Test NameAssertion Error Iteration: 1 - Get Interface/private REQUEST DESCRIPTION Test _ping endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface/private RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 13ms Mean size per request: 12.05KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId runscope:maturity:b408a3e8-1777-41f5-8786-d8416b93c87d Accept application/json Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJTUUxCNWlKU3J3T2Q1UHE3Y0xZVmU1X05EX2hya1RnTGc3dEgiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.eFAu8MQK4Z3kWpqqm8EcuGZOR_NXfoFNfLkXn10EIwUerkoLg3hJRNSMlbunBOl2vbIbLpfeXjUbQ0YfuDGQTHDiyrfBtr0Aly3FbD5S0vm9YgKFyTcUSYM9FDZKaprnyq2jsuBuvQ-ckrJG_JsqG3AHEj6E8W65NuXAP6JvJ0rz46t8-mQA9-YIP-uSB47teKVenQOxHR3z1Yai0-_lWASXoDx3SNp4AzGabfsHqejaV-_CQBwGjxM1ga5os3r0PMuhX7wWCLzk2cmUJXDbrm3plE9hh6JOdUj8p0sREBHP63pEnvsY7zBsHx-2u1NSOEVCzA7lmeDIGD5eKe3__Q User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token 866667f8-4f82-415c-930e-6ae3a6adb4df Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:06 GMT Content-Type application/openapi+json Content-Length 2323 Connection keep-alive TraceId runscope:maturity:b408a3e8-1777-41f5-8786-d8416b93c87d Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "openapi": "3.0.1", "info": { "title": "Tesco Sponsored Media", "description": "Sponsored media service providing bidding for ads and reporting to ad provider", "contact": { "name": "Recommendations Team", "url": "https://www.tescorecs.com", "email": "05_Technology_6_Recs.OnCall@tesco.com" }, "version": "1.0" }, "servers": [ { "url": "https://dev.uk.tescospmedia.com/sponsored-media" } ], "tags": [ { "name": "API" }, { "name": "Retrieve ads" }, { "name": "Bertie reporting" }, { "name": "Admin API" } ], "paths": { "/_healthcheck": { "get": { "tags": [ "API" ], "summary": "Get health check result for each component/dependency", "description": "Gets health check last known result for each component/dependency", "operationId": "status", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatus" } } } }, "401": { "description": "Authentication error", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePublic", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface/private": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePrivate", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_status": { "get": { "tags": [ "API" ], "summary": "Get service health check result", "description": "Get service health check result", "operationId": "status_1", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status_1", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/ads": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list", "description": "Retrieves list of ads for given search term. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAds", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "searchTerm", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/placements/{placement}": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list for Placement", "description": "Retrieves list of ads for given placement. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAdsForPlacement", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "placement", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Placement" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/reporting/events": { "post": { "tags": [ "Bertie reporting" ], "summary": "Reporting Clicks and Impressions", "description": "Bertie sends clicks and impressions to report to Citrus-Ad. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "bertieReporting", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "TraceId", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BertieEvent" } } }, "required": true }, "responses": { "204": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } } }, "components": { "schemas": { "AdProduct": { "required": [ "bid" ], "type": "object", "properties": { "tpnb": { "type": "string", "example": "1234567" }, "adId": { "type": "string", "example": "display_CUh_V2l-Vh7cjqF2TTJTzZ1mx8o3NzMzNjM2" }, "bid": { "type": "number", "example": 1.21 } } }, "BertieContent": { "required": [ "componentName", "panel" ], "type": "object", "properties": { "componentName": { "minLength": 1, "type": "string", "example": "sponsored" }, "panel": { "type": "array", "items": { "$ref": "#/components/schemas/BertiePanelItem" } } } }, "BertieEvent": { "required": [ "bertieType", "content", "product", "uisReceivedTimestamp" ], "type": "object", "properties": { "bertieType": { "$ref": "#/components/schemas/BertieEventType" }, "identifier": { "type": "string", "nullable": true, "example": "sponsored:citrus" }, "interactionType": { "type": "string", "nullable": true, "example": "add" }, "basketId": { "type": "string", "nullable": true, "example": "0123456" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/BertieContent" } }, "product": { "type": "array", "items": { "$ref": "#/components/schemas/BertieProduct" } }, "bertieTimeStamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2021-06-29T08:36:02Z" }, "uisReceivedTimestamp": { "type": "string", "format": "date-time", "example": "2021-06-29T08:36:02Z" } } }, "BertieEventType": { "type": "string", "enum": [ "BASKET_ADD_CLICK", "CONTENT_CLICK", "IMPRESSION" ] }, "BertiePanelItem": { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/components/schemas/BertieProduct" } } }, "BertieProduct": { "required": [ "adId", "tpnb" ], "type": "object", "properties": { "adId": { "minLength": 1, "type": "string", "example": "1234adidhere456789" }, "tpnb": { "minLength": 1, "type": "string", "example": "50502269" } } }, "ErrorResponseDto": { "type": "object", "properties": { "code": { "type": "string", "example": "4xx/5xx" }, "type": { "type": "string", "example": "converter.error.message" }, "message": { "type": "string", "example": "listId: cannot be null" }, "traceId": { "type": "string", "example": "list:9c3fc6d7-12fa-4403-b295-5c0b56a57665" } } }, "Health": { "type": "object" }, "HealthStatus": { "required": [ "component", "status", "version" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Status" }, "version": { "type": "string" }, "component": { "type": "array", "items": { "$ref": "#/components/schemas/Health" } } } }, "Placement": { "type": "string", "enum": [ "SEARCH", "CHECKOUT" ] }, "RetrieveAdResponse": { "type": "object", "properties": { "numberToDisplay": { "type": "integer", "description": "number to display", "format": "int32", "example": 2 }, "products": { "allOf": [ { "$ref": "#/components/schemas/AdProduct" }, { "type": "object", "description": "list of ad products" } ] } } }, "Status": { "type": "string", "enum": [ "OK", "FAIL" ] }, "StatusResponse": { "type": "object", "properties": { "version": { "type": "string", "example": "1.0.0" }, "status": { "type": "string", "example": "alive" }, "statusCode": { "type": "integer", "format": "int32", "example": 200 }, "message": { "type": "string", "example": "OK" } } } }, "securitySchemes": { "OAuth2": { "type": "oauth2", "description": "Industry Standard OAuth2 Authorization Scheme", "flows": { "clientCredentials": { "tokenUrl": "https://api-ppe.tesco.com/identity/v4/issue-token/token", "scopes": { "public": "Grants access to public API endpoints from the Platform API", "private": "Grants access to Tesco internal (partner, colleague & privilege) API", "internal": "Grants access to platform private API endpoints (only API team)" } } } }, "identity": { "type": "apiKey", "description": "Tesco standard bearer token generated by the Identity API", "name": "Authorization", "in": "header" } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Status code is 200 2 0 0 Total200 TEST FAILURE Test NameAssertion Error Iteration: 1 - Headers REQUEST DESCRIPTION Test _ping endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface/private RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 22ms Mean size per request: 12.05KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId {{TRACEID}} Origin https://developers.tesco.com Accept application/json Accept-Language en-GB Content-Type application/json User-Agent Fitness function Postman tests 1.0 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJpODAyb3NhZXdCNktaaWpLMHRYWkVyV19JSTA4VXJjRG5DZGQiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.YWnPRsMSp2oqPDUdMZpUaB27eWjkXnsES7eq9Jsj2jvAATGaput9gHUJqM_GIfy7Ey-XX-mR5mkwonSms2MmYoah4op6LwG9H-1NQ37l23NHFqpauIO-rG7s7X-4PFJm4gWLYFgHbqY-baPAlSzrrSNAIRvBR7PyDCM5c_CZsGMBDODX0CjXpVpg0e6ZDXqR9idMrqUBH97ro8Kda-hGfELB575YifGEdUJQoGcjLxInwmC2t_b7ucczynzcq8RO5FwT4PMT6v9aNOdn7sJttwZmLCEcYeO_3WhqUnarab9VB_yZ0xsWH5r1Si9486vh0ab0lbrgIqcWVAzNPcivIA Cache-Control no-cache Postman-Token 106afadf-c317-4e1c-a184-2b285f874d30 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:06 GMT Content-Type application/openapi+json Content-Length 2323 Connection keep-alive Access-Control-Allow-Origin https://developers.tesco.com Vary Origin Access-Control-Expose-Headers Content-Type Access-Control-Expose-Headers traceId Access-Control-Expose-Headers Access-Control-Allow-Origin Access-Control-Allow-Credentials true TraceId {{TRACEID}} Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "openapi": "3.0.1", "info": { "title": "Tesco Sponsored Media", "description": "Sponsored media service providing bidding for ads and reporting to ad provider", "contact": { "name": "Recommendations Team", "url": "https://www.tescorecs.com", "email": "05_Technology_6_Recs.OnCall@tesco.com" }, "version": "1.0" }, "servers": [ { "url": "https://dev.uk.tescospmedia.com/sponsored-media" } ], "tags": [ { "name": "API" }, { "name": "Retrieve ads" }, { "name": "Bertie reporting" }, { "name": "Admin API" } ], "paths": { "/_healthcheck": { "get": { "tags": [ "API" ], "summary": "Get health check result for each component/dependency", "description": "Gets health check last known result for each component/dependency", "operationId": "status", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatus" } } } }, "401": { "description": "Authentication error", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePublic", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface/private": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePrivate", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_status": { "get": { "tags": [ "API" ], "summary": "Get service health check result", "description": "Get service health check result", "operationId": "status_1", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status_1", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/ads": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list", "description": "Retrieves list of ads for given search term. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAds", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "searchTerm", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/placements/{placement}": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list for Placement", "description": "Retrieves list of ads for given placement. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAdsForPlacement", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "placement", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Placement" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/reporting/events": { "post": { "tags": [ "Bertie reporting" ], "summary": "Reporting Clicks and Impressions", "description": "Bertie sends clicks and impressions to report to Citrus-Ad. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "bertieReporting", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "TraceId", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BertieEvent" } } }, "required": true }, "responses": { "204": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } } }, "components": { "schemas": { "AdProduct": { "required": [ "bid" ], "type": "object", "properties": { "tpnb": { "type": "string", "example": "1234567" }, "adId": { "type": "string", "example": "display_CUh_V2l-Vh7cjqF2TTJTzZ1mx8o3NzMzNjM2" }, "bid": { "type": "number", "example": 1.21 } } }, "BertieContent": { "required": [ "componentName", "panel" ], "type": "object", "properties": { "componentName": { "minLength": 1, "type": "string", "example": "sponsored" }, "panel": { "type": "array", "items": { "$ref": "#/components/schemas/BertiePanelItem" } } } }, "BertieEvent": { "required": [ "bertieType", "content", "product", "uisReceivedTimestamp" ], "type": "object", "properties": { "bertieType": { "$ref": "#/components/schemas/BertieEventType" }, "identifier": { "type": "string", "nullable": true, "example": "sponsored:citrus" }, "interactionType": { "type": "string", "nullable": true, "example": "add" }, "basketId": { "type": "string", "nullable": true, "example": "0123456" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/BertieContent" } }, "product": { "type": "array", "items": { "$ref": "#/components/schemas/BertieProduct" } }, "bertieTimeStamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2021-06-29T08:36:02Z" }, "uisReceivedTimestamp": { "type": "string", "format": "date-time", "example": "2021-06-29T08:36:02Z" } } }, "BertieEventType": { "type": "string", "enum": [ "BASKET_ADD_CLICK", "CONTENT_CLICK", "IMPRESSION" ] }, "BertiePanelItem": { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/components/schemas/BertieProduct" } } }, "BertieProduct": { "required": [ "adId", "tpnb" ], "type": "object", "properties": { "adId": { "minLength": 1, "type": "string", "example": "1234adidhere456789" }, "tpnb": { "minLength": 1, "type": "string", "example": "50502269" } } }, "ErrorResponseDto": { "type": "object", "properties": { "code": { "type": "string", "example": "4xx/5xx" }, "type": { "type": "string", "example": "converter.error.message" }, "message": { "type": "string", "example": "listId: cannot be null" }, "traceId": { "type": "string", "example": "list:9c3fc6d7-12fa-4403-b295-5c0b56a57665" } } }, "Health": { "type": "object" }, "HealthStatus": { "required": [ "component", "status", "version" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Status" }, "version": { "type": "string" }, "component": { "type": "array", "items": { "$ref": "#/components/schemas/Health" } } } }, "Placement": { "type": "string", "enum": [ "SEARCH", "CHECKOUT" ] }, "RetrieveAdResponse": { "type": "object", "properties": { "numberToDisplay": { "type": "integer", "description": "number to display", "format": "int32", "example": 2 }, "products": { "allOf": [ { "$ref": "#/components/schemas/AdProduct" }, { "type": "object", "description": "list of ad products" } ] } } }, "Status": { "type": "string", "enum": [ "OK", "FAIL" ] }, "StatusResponse": { "type": "object", "properties": { "version": { "type": "string", "example": "1.0.0" }, "status": { "type": "string", "example": "alive" }, "statusCode": { "type": "integer", "format": "int32", "example": 200 }, "message": { "type": "string", "example": "OK" } } } }, "securitySchemes": { "OAuth2": { "type": "oauth2", "description": "Industry Standard OAuth2 Authorization Scheme", "flows": { "clientCredentials": { "tokenUrl": "https://api-ppe.tesco.com/identity/v4/issue-token/token", "scopes": { "public": "Grants access to public API endpoints from the Platform API", "private": "Grants access to Tesco internal (partner, colleague & privilege) API", "internal": "Grants access to platform private API endpoints (only API team)" } } } }, "identity": { "type": "apiKey", "description": "Tesco standard bearer token generated by the Identity API", "name": "Authorization", "in": "header" } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _interface/private and expected the header - Cache-Control is present 2 0 0 Called _interface/private and expected the header - Content-Language is present 2 0 0 Called _interface/private and expected the header - Content-Type is present 2 0 0 Total600 TEST FAILURE Test NameAssertion Error Iteration: 1 - TraceId REQUEST DESCRIPTION Test _ping endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface/private RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 20ms Mean size per request: 12.05KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value Accept application/json Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJfVGN1dzVub181NVNuWHlVMkFHVVdESGZodGwya1kyd0Fia2kiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.TwFpvcnhQ9Znam6DyXHk6HinZkQ6q5Ckv4UayZh_tvXph8cRAaX7Ca_jxvqMOAKmuK9llu7VzZlcVU-SRLZ79KiJzdKLxk81gLPK77Mp6vo1GdyMqvOZBudmrMwii1PXdEYqHyKq01U5F4UPgC7s78oTXhb5j_aH3dgUoJsmWbDBavPG-KIo65uIijNW0VNrzmQM4XapPdwdNtWb2crLaEsU6GPC8-9K6K7Im_LcsrmabXd2IS7J3xfD7QEK2VZ0j3vX6r1AGh_hFmHHHKr4GJoNocl5QzstKgbQfJH37kUbT75aK1nx6oJLjSPNYFogPvaGMR17G9sYCYeZNhChaQ User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token 22bd6b1d-9f11-42af-ac30-7325c34ca903 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:06 GMT Content-Type application/openapi+json Content-Length 2323 Connection keep-alive TraceId app:924a1c2c-f1db-4693-aa43-9b49cfee55f7 Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "openapi": "3.0.1", "info": { "title": "Tesco Sponsored Media", "description": "Sponsored media service providing bidding for ads and reporting to ad provider", "contact": { "name": "Recommendations Team", "url": "https://www.tescorecs.com", "email": "05_Technology_6_Recs.OnCall@tesco.com" }, "version": "1.0" }, "servers": [ { "url": "https://dev.uk.tescospmedia.com/sponsored-media" } ], "tags": [ { "name": "API" }, { "name": "Retrieve ads" }, { "name": "Bertie reporting" }, { "name": "Admin API" } ], "paths": { "/_healthcheck": { "get": { "tags": [ "API" ], "summary": "Get health check result for each component/dependency", "description": "Gets health check last known result for each component/dependency", "operationId": "status", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatus" } } } }, "401": { "description": "Authentication error", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePublic", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface/private": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePrivate", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_status": { "get": { "tags": [ "API" ], "summary": "Get service health check result", "description": "Get service health check result", "operationId": "status_1", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status_1", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/ads": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list", "description": "Retrieves list of ads for given search term. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAds", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "searchTerm", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/placements/{placement}": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list for Placement", "description": "Retrieves list of ads for given placement. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAdsForPlacement", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "placement", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Placement" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/reporting/events": { "post": { "tags": [ "Bertie reporting" ], "summary": "Reporting Clicks and Impressions", "description": "Bertie sends clicks and impressions to report to Citrus-Ad. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "bertieReporting", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "TraceId", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BertieEvent" } } }, "required": true }, "responses": { "204": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } } }, "components": { "schemas": { "AdProduct": { "required": [ "bid" ], "type": "object", "properties": { "tpnb": { "type": "string", "example": "1234567" }, "adId": { "type": "string", "example": "display_CUh_V2l-Vh7cjqF2TTJTzZ1mx8o3NzMzNjM2" }, "bid": { "type": "number", "example": 1.21 } } }, "BertieContent": { "required": [ "componentName", "panel" ], "type": "object", "properties": { "componentName": { "minLength": 1, "type": "string", "example": "sponsored" }, "panel": { "type": "array", "items": { "$ref": "#/components/schemas/BertiePanelItem" } } } }, "BertieEvent": { "required": [ "bertieType", "content", "product", "uisReceivedTimestamp" ], "type": "object", "properties": { "bertieType": { "$ref": "#/components/schemas/BertieEventType" }, "identifier": { "type": "string", "nullable": true, "example": "sponsored:citrus" }, "interactionType": { "type": "string", "nullable": true, "example": "add" }, "basketId": { "type": "string", "nullable": true, "example": "0123456" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/BertieContent" } }, "product": { "type": "array", "items": { "$ref": "#/components/schemas/BertieProduct" } }, "bertieTimeStamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2021-06-29T08:36:02Z" }, "uisReceivedTimestamp": { "type": "string", "format": "date-time", "example": "2021-06-29T08:36:02Z" } } }, "BertieEventType": { "type": "string", "enum": [ "BASKET_ADD_CLICK", "CONTENT_CLICK", "IMPRESSION" ] }, "BertiePanelItem": { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/components/schemas/BertieProduct" } } }, "BertieProduct": { "required": [ "adId", "tpnb" ], "type": "object", "properties": { "adId": { "minLength": 1, "type": "string", "example": "1234adidhere456789" }, "tpnb": { "minLength": 1, "type": "string", "example": "50502269" } } }, "ErrorResponseDto": { "type": "object", "properties": { "code": { "type": "string", "example": "4xx/5xx" }, "type": { "type": "string", "example": "converter.error.message" }, "message": { "type": "string", "example": "listId: cannot be null" }, "traceId": { "type": "string", "example": "list:9c3fc6d7-12fa-4403-b295-5c0b56a57665" } } }, "Health": { "type": "object" }, "HealthStatus": { "required": [ "component", "status", "version" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Status" }, "version": { "type": "string" }, "component": { "type": "array", "items": { "$ref": "#/components/schemas/Health" } } } }, "Placement": { "type": "string", "enum": [ "SEARCH", "CHECKOUT" ] }, "RetrieveAdResponse": { "type": "object", "properties": { "numberToDisplay": { "type": "integer", "description": "number to display", "format": "int32", "example": 2 }, "products": { "allOf": [ { "$ref": "#/components/schemas/AdProduct" }, { "type": "object", "description": "list of ad products" } ] } } }, "Status": { "type": "string", "enum": [ "OK", "FAIL" ] }, "StatusResponse": { "type": "object", "properties": { "version": { "type": "string", "example": "1.0.0" }, "status": { "type": "string", "example": "alive" }, "statusCode": { "type": "integer", "format": "int32", "example": 200 }, "message": { "type": "string", "example": "OK" } } } }, "securitySchemes": { "OAuth2": { "type": "oauth2", "description": "Industry Standard OAuth2 Authorization Scheme", "flows": { "clientCredentials": { "tokenUrl": "https://api-ppe.tesco.com/identity/v4/issue-token/token", "scopes": { "public": "Grants access to public API endpoints from the Platform API", "private": "Grants access to Tesco internal (partner, colleague & privilege) API", "internal": "Grants access to platform private API endpoints (only API team)" } } } }, "identity": { "type": "apiKey", "description": "Tesco standard bearer token generated by the Identity API", "name": "Authorization", "in": "header" } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _interface/private with no traceid headers and expected a traceid header in the response 2 0 0 Total200 TEST FAILURE Test NameAssertion Error Iteration: 1 - TraceId (in header) REQUEST DESCRIPTION Test _ping endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface/private?TraceId=runscope:maturity:1a9deba0-629c-453a-8674-42473549bfdf RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 21ms Mean size per request: 12.05KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value Accept application/json TraceId runscope:maturity:3400eeee-0f91-4860-bd54-b45972952d1b Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJ0bGV3bXBLM25VMFRmQ3N0aVgwSzEwVkV6UkNKbVJzdExuamEiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.h6d_gq3og2JfLEzylhTgIfjp_v7CVR_3FjmCLIc6U5WJzcq9nPIfKiTF6muAM7auXInCy7EiZlVEn90Ry-TpfPPUnw2aA-JYcbA7VqlDivdAukdCNvXp_jXfWzNjnNcygvBpw3ec6su9037GhfDd_gisrU7b6iyNYhunikwTLv7gchgQl4CSI-jZLQSH68JW6G-uMSqG-ZLGbFVbNCZ30c_xopuD70rJvEelL-u05Xt7d608snLVDo4rrRLhNukCXCgoX1m8qH_ZVQrFS0vMOlPucqw6FI6cNNPSalXHXiyzKA9XOXhJMDbwvGl4SmKW1LdwlHl3VTdAh46NltUfLw User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token 8cc488de-8c10-47df-9a46-a3903aeade13 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:06 GMT Content-Type application/openapi+json Content-Length 2323 Connection keep-alive TraceId runscope:maturity:3400eeee-0f91-4860-bd54-b45972952d1b Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "openapi": "3.0.1", "info": { "title": "Tesco Sponsored Media", "description": "Sponsored media service providing bidding for ads and reporting to ad provider", "contact": { "name": "Recommendations Team", "url": "https://www.tescorecs.com", "email": "05_Technology_6_Recs.OnCall@tesco.com" }, "version": "1.0" }, "servers": [ { "url": "https://dev.uk.tescospmedia.com/sponsored-media" } ], "tags": [ { "name": "API" }, { "name": "Retrieve ads" }, { "name": "Bertie reporting" }, { "name": "Admin API" } ], "paths": { "/_healthcheck": { "get": { "tags": [ "API" ], "summary": "Get health check result for each component/dependency", "description": "Gets health check last known result for each component/dependency", "operationId": "status", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthStatus" } } } }, "401": { "description": "Authentication error", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePublic", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_interface/private": { "get": { "tags": [ "API", "API" ], "summary": "OpenAPI specification in yaml or JSON", "description": "OpenAPI specification for the service either in yaml or JSON format (header dependent, please select in the response header)", "operationId": "getInterfacePrivate", "parameters": [], "responses": { "200": { "description": "Specification successfully returned in requested format", "content": { "application/json": {}, "application/swagger+json": {}, "application/openapi+json": {}, "application/raml+yaml": {}, "application/swagger+raml+yaml": {}, "application/openapi+raml+yaml": {} } }, "400": { "description": "Not allowed accept header", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "500": { "description": "Something went wrong when reading the spec or converting the format", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/_status": { "get": { "tags": [ "API" ], "summary": "Get service health check result", "description": "Get service health check result", "operationId": "status_1", "parameters": [ { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Service status_1", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "503": { "description": "Service is unavailable", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/ads": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list", "description": "Retrieves list of ads for given search term. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAds", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "searchTerm", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/products/placements/{placement}": { "get": { "tags": [ "Retrieve ads" ], "summary": "Retrieve Ad list for Placement", "description": "Retrieves list of ads for given placement. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "getAdsForPlacement", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "tesco-customerauth", "in": "header", "description": "`Customer` token with `Bearer`", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "TraceId", "in": "header", "required": false, "schema": { "type": "string", "nullable": true } }, { "name": "placement", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/Placement" } } ], "responses": { "200": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RetrieveAdResponse" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } }, "/v1/reporting/events": { "post": { "tags": [ "Bertie reporting" ], "summary": "Reporting Clicks and Impressions", "description": "Bertie sends clicks and impressions to report to Citrus-Ad. The clientId of `Authorization` header must be allow-listed to access this endpoint.", "operationId": "bertieReporting", "parameters": [ { "name": "Authorization", "in": "header", "description": "`Service to service` token with `Bearer`", "required": true, "schema": { "type": "string" } }, { "name": "TraceId", "in": "header", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BertieEvent" } } }, "required": true }, "responses": { "204": { "description": "Ads returned successfully", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "type": "object" } } } }, "400": { "description": "Bad request parameters", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } }, "401": { "description": "Authentication error, invalid token supplied", "headers": { "TraceId": { "description": "Trace ID header", "schema": { "type": "string" } } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponseDto" } } } } }, "security": [ { "identity": [] }, { "OAuth2": [ "public", "private" ] } ] } } }, "components": { "schemas": { "AdProduct": { "required": [ "bid" ], "type": "object", "properties": { "tpnb": { "type": "string", "example": "1234567" }, "adId": { "type": "string", "example": "display_CUh_V2l-Vh7cjqF2TTJTzZ1mx8o3NzMzNjM2" }, "bid": { "type": "number", "example": 1.21 } } }, "BertieContent": { "required": [ "componentName", "panel" ], "type": "object", "properties": { "componentName": { "minLength": 1, "type": "string", "example": "sponsored" }, "panel": { "type": "array", "items": { "$ref": "#/components/schemas/BertiePanelItem" } } } }, "BertieEvent": { "required": [ "bertieType", "content", "product", "uisReceivedTimestamp" ], "type": "object", "properties": { "bertieType": { "$ref": "#/components/schemas/BertieEventType" }, "identifier": { "type": "string", "nullable": true, "example": "sponsored:citrus" }, "interactionType": { "type": "string", "nullable": true, "example": "add" }, "basketId": { "type": "string", "nullable": true, "example": "0123456" }, "content": { "type": "array", "items": { "$ref": "#/components/schemas/BertieContent" } }, "product": { "type": "array", "items": { "$ref": "#/components/schemas/BertieProduct" } }, "bertieTimeStamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2021-06-29T08:36:02Z" }, "uisReceivedTimestamp": { "type": "string", "format": "date-time", "example": "2021-06-29T08:36:02Z" } } }, "BertieEventType": { "type": "string", "enum": [ "BASKET_ADD_CLICK", "CONTENT_CLICK", "IMPRESSION" ] }, "BertiePanelItem": { "required": [ "product" ], "type": "object", "properties": { "product": { "$ref": "#/components/schemas/BertieProduct" } } }, "BertieProduct": { "required": [ "adId", "tpnb" ], "type": "object", "properties": { "adId": { "minLength": 1, "type": "string", "example": "1234adidhere456789" }, "tpnb": { "minLength": 1, "type": "string", "example": "50502269" } } }, "ErrorResponseDto": { "type": "object", "properties": { "code": { "type": "string", "example": "4xx/5xx" }, "type": { "type": "string", "example": "converter.error.message" }, "message": { "type": "string", "example": "listId: cannot be null" }, "traceId": { "type": "string", "example": "list:9c3fc6d7-12fa-4403-b295-5c0b56a57665" } } }, "Health": { "type": "object" }, "HealthStatus": { "required": [ "component", "status", "version" ], "type": "object", "properties": { "status": { "$ref": "#/components/schemas/Status" }, "version": { "type": "string" }, "component": { "type": "array", "items": { "$ref": "#/components/schemas/Health" } } } }, "Placement": { "type": "string", "enum": [ "SEARCH", "CHECKOUT" ] }, "RetrieveAdResponse": { "type": "object", "properties": { "numberToDisplay": { "type": "integer", "description": "number to display", "format": "int32", "example": 2 }, "products": { "allOf": [ { "$ref": "#/components/schemas/AdProduct" }, { "type": "object", "description": "list of ad products" } ] } } }, "Status": { "type": "string", "enum": [ "OK", "FAIL" ] }, "StatusResponse": { "type": "object", "properties": { "version": { "type": "string", "example": "1.0.0" }, "status": { "type": "string", "example": "alive" }, "statusCode": { "type": "integer", "format": "int32", "example": 200 }, "message": { "type": "string", "example": "OK" } } } }, "securitySchemes": { "OAuth2": { "type": "oauth2", "description": "Industry Standard OAuth2 Authorization Scheme", "flows": { "clientCredentials": { "tokenUrl": "https://api-ppe.tesco.com/identity/v4/issue-token/token", "scopes": { "public": "Grants access to public API endpoints from the Platform API", "private": "Grants access to Tesco internal (partner, colleague & privilege) API", "internal": "Grants access to platform private API endpoints (only API team)" } } } }, "identity": { "type": "apiKey", "description": "Tesco standard bearer token generated by the Identity API", "name": "Authorization", "in": "header" } } } } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _interface/private with no traceid headers and expected a traceid header in the response 2 0 0 Total200 TEST FAILURE Test NameAssertion Error Iteration: 1 - Internationalisation (header) REQUEST DESCRIPTION Test _ping endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface/private RESPONSE INFORMATION Response Code: 400 - Bad Request Mean time per request: 24ms Mean size per request: 152B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value Accept application/json Accept-Language th-TH TraceId runscope:maturity:5854a988-2092-4112-a0f6-15ed0a4c0362 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJROGRFYW90aV9Zdm1Ua0kzdlZqOV8wT3ZDTWN4U2YyMmw5N2QiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.h25ERJcqQrjg3jekXrS-8HZUflJls_HEHeSzU0chdh2SHdmJeClPUsJy2BwxYjIE9nRR_AAZX2o-aZjlNItwFD0KufvMyUG-NXN_GjECFVSutb2YYpzIa98mjv9vAb0WvlEG7alaojwmqTdVBoTiHvzqqGa3faTERiOV-CbG8FxCuFQdN2F5YaXaK2ZEgHi3_a5aYQyAIXzAekm2WvDX26pxjO1LibTd6SGuz3hMIGAvmZ41jI35U4Glxm_iWnTuym4yM58OOemODw6Gx3dr4vOc4KL73RRDM0cgRjIWIrxbehT85-SN8r6MTWJtJHwQ_kLaCruqKVAYW-vhDKelkQ User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token a69c5d3c-b6cc-469c-be34-942395ae0a42 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:06 GMT Content-Type application/json; charset=utf-8 Content-Length 152 Connection keep-alive TraceId runscope:maturity:5854a988-2092-4112-a0f6-15ed0a4c0362 Cache-Control no-cache Content-Language th-TH RESPONSE BODY { "code": "400", "type": "language.not.supported", "message": "Unsupported language th-TH", "traceId": "runscope:maturity:5854a988-2092-4112-a0f6-15ed0a4c0362" } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _interface/private with an Accept-Language header of th-TH and expected a status code of 200 or 400 in the response 2 0 0 Total200 TEST FAILURE Test NameAssertion Error Iteration: 1 - Internationalisation (parameter) REQUEST DESCRIPTION Test _ping endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_interface/private?_language=th-TH RESPONSE INFORMATION Response Code: 400 - Bad Request Mean time per request: 19ms Mean size per request: 152B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value Accept application/json Accept-Language en-GB TraceId runscope:maturity:07fbacc8-0686-4c25-bf6c-667ed8b4664e Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJMdW9TNFhXUlZaVDVOc1BDS3liaXlyc2xSM3M3cHJJODZNbTUiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.Mb-t59mu0ZYo2KJLiX3JfsV4uwy8BXSNfjT43KWTPyqMfafIRbNiRk0zMy5OPSPcwe60gc0Pl3xDbYOxGSL-CanW5F3XBG4c0ZeAhnFpcZHxHyMHhl8Ru7TVikjd54ZLYKIgafkXgbYyCvzFX3c_JWG-NU96hRvSUpZP7Ma36g1TigfUDcBY7ck4QMwXw-IPbF6j7FxjH0CokMyXgI0FYY_QfM4icnJWW2cR2iI1nxPV_RtAeoE6R6HTMEEhp887rjBBaaELMT25799EGUkVy3190910EzE6NZbQg1gMG6C2eiMBz_Ch760xMphqzPUjlbvhDlFwJb4GFco_rIkw_w User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token e4bf17dd-8cd9-4b4e-966a-e50968e1f607 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:06 GMT Content-Type application/json; charset=utf-8 Content-Length 152 Connection keep-alive TraceId runscope:maturity:07fbacc8-0686-4c25-bf6c-667ed8b4664e Cache-Control no-cache Content-Language th-TH RESPONSE BODY { "code": "400", "type": "language.not.supported", "message": "Unsupported language th-TH", "traceId": "runscope:maturity:07fbacc8-0686-4c25-bf6c-667ed8b4664e" } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _interface/private with an Accept-Language header of th-TH and expected a status code of 200 or 400 in the response 2 0 0 Total200 TEST FAILURE Test NameAssertion Error Iteration: 1 - Environment REQUEST DESCRIPTION Test _ping endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_status RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 20ms Mean size per request: 68B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId runscope:maturity:34c20b40-606f-416f-9712-a5ac74e00cef Accept application/json Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJkdUFDTmE5UVhVX0ZCS19rVnVacmVYeExGY01sazh5VTFnbjYiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.ehTYHeb5CTDMRX6ZKO-dK6D75jjySN7pu2syfI4R7xt8F2bGn5foqTYj0JeiJa3s6fRFrhgau7O11vG7PfN86AVcGAgr1PecEDwOnwqsBs3-6V5au7zgaJGeVecotu9MpX_xgjtZY0C1Ai6nSQ8fVBhdCqDbdhVf7E1sGV5tdCjmsp3cfd1Qw0rPWIoMGU4XFS_Uy2X6ARLjJyt13kxqdqulS9RGn6zHR979H0v888J0isZi-7BOaQ7F5v3WT8pDP9Ht2tR2xZVqC7JKGOnDXYKlNafKnUM-v6Es-HmBJx9iIV1DrVf_viQhE1U7LvH9Szm-BbPiVjOMXX8hFvul4g User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token 7ea1de86-77dd-46f1-8da3-a6fef3de9116 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:06 GMT Content-Type application/json; charset=utf-8 Content-Length 68 Connection keep-alive TraceId runscope:maturity:34c20b40-606f-416f-9712-a5ac74e00cef Cache-Control no-cache Content-Language en-GB RESPONSE BODY { "version": "0.0.1", "status": "Ok", "statusCode": 200, "message": "alive" } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _status in PPE environment and expected a response time of less than 600ms 2 0 0 Called _status in PPE environment and expected a status code of 200 in the response 2 0 0 Called _status in PPE environment and expected a status field exists and says 'Ok' in the response body 2 0 0 Called _status in PPE environment and expected a version field exists in the response body 2 0 0 Total800 TEST FAILURE Test NameAssertion Error Iteration: 1 - _status REQUEST DESCRIPTION Test _ping endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_status RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 22ms Mean size per request: 68B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId runscope:maturity:2a4445ad-099f-4e03-9150-69792907cc5a Accept application/json Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJ6SHNXQzlRQjN0b0hfZFZ5Z2FnMUswSzFVdU15X1NacUU0d0MiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ2LCJuYmYiOjE2NzIwNDAzNDYsImV4cCI6MTY3MjA0Mzk0Niwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.ZBBLZyG459QwSYiXr0MptfZ6wYJ6jjjGMGdAOZzJ64XVz0GG23zCjx5YFa-y1-Ah3bNTyuvx7wTHkdK5jcldMEOQDT8NDcj901dZ1uewgMLzltsqAKxT3rb_L1-0VkycCH3yn1yYRd6mjblxh6OTs9_UnICBI_coQdbG0rxX0njLUkGjbdxTPAcWN1r8W4P5S-nMEC5SClL1dtpK4oAk0ItZ33r5E7BDLBednIkbqCO8I3MNUEuh4OhXinxyU0QYSp71QlZ1M0DtvXYbjcpvajEEE098ORuzaCTJDOeD4d4veIjsxbcTiu2VbmBkp93zIQLR767NESBlooJWa3KI-A User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token c3879cb5-b0cc-4d3e-9e69-ef42db5cf7e1 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:07 GMT Content-Type application/json; charset=utf-8 Content-Length 68 Connection keep-alive TraceId runscope:maturity:2a4445ad-099f-4e03-9150-69792907cc5a Cache-Control no-cache Content-Language en-GB RESPONSE BODY { "version": "0.0.1", "status": "Ok", "statusCode": 200, "message": "alive" } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _status and expected a response time of less than 600ms 2 0 0 Called _status and expected a status code of 200 in the response 2 0 0 Called _status and expected a status field exists and says 'Ok' in the response body 2 0 0 Called _status and expected a version field exists in the response body 2 0 0 Total800 TEST FAILURE Test NameAssertion Error Iteration: 1 - _healthcheck REQUEST DESCRIPTION Test _healthcheck endpoint REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/_healthcheck RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 13ms Mean size per request: 358B -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId runscope:maturity:95edc656-f518-486b-ba60-70d2515dde8a Accept application/json Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJaSnVHcmtaUWgzNk1hOF91Rk1NSTZCU2ZBd1lxdDFIMmVQNzUiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ3LCJuYmYiOjE2NzIwNDAzNDcsImV4cCI6MTY3MjA0Mzk0Nywic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.G6LYikf5u6Uetolsp4ZceWfuIjBmc7uM9svjJGBL4SjrfLoipFH1QQuvevZvCvx_uVlCBOVFoDu8oGt0pe8c_H5ljILHH4ZshQvomMS7FjRzZsl0IZQQhIqM-jzLevtiaXGUdKL9EpKtraWVWFTzXH-h0jhQSxNCzdqeSpik1Ve0nciMQryX41Lpz_dssOwYALT78VgBfQ4OUF2DWp7y9jPQF3w3VeivLAj8rS12QW3niAWfhSZxv1rQ0IfWzhjUJBkZ0inOmNjDpCuCe6KdmV-0KHmdytgtbR7UXoV0WqLmS3VccGARBJQHy6AoHWRMpStqxngdL-o8QkcQYgg6Zw User-Agent PostmanRuntime/7.29.0 Cache-Control no-cache Postman-Token bdd6bbc9-bd5a-48cd-ba7d-f774176f138d Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:07 GMT Content-Type application/json; charset=utf-8 Content-Length 358 Connection keep-alive TraceId runscope:maturity:95edc656-f518-486b-ba60-70d2515dde8a Cache-Control no-cache Content-Language en-GB RESPONSE BODY { "status": "Ok", "version": "0.0.1", "component": [ { "name": "IdentityAPI", "description": "Authentication client validation", "status": "Ok", "checked": "2022-12-26T07:38:08.687688949Z", "type": "DEPENDENCY" }, { "name": "CitrusAd", "description": "Ranks products by keyword based on sponsored media", "status": "Ok", "checked": "2022-12-26T07:38:08.87062738Z", "type": "COMPONENT" } ] } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Called _healthcheck and expected a component field exists in the response body 2 0 0 Called _healthcheck and expected a response time of less than 600ms 2 0 0 Called _healthcheck and expected a status code of 200 in the response 2 0 0 Called _healthcheck and expected a status field exists and says 'Ok' in the response body 2 0 0 Called _healthcheck and expected a version field exists in the response body 2 0 0 Total1000 TEST FAILURE Test NameAssertion Error Sponsored Media - Placements / Retrieve AD - 2 Requests in the folder Iteration: 1 - Anonymous AD retrieval REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/v1/products/ads?searchTerm=ice%20cream RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 343ms Mean size per request: 1.64KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:971e611b-677e-418f-8b7a-911d2be56716 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJrMGg0RUt6T0g4dHU5RWtVRzRqSTRoaVVXOENYc2JwX0c1NHMiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ3LCJuYmYiOjE2NzIwNDAzNDcsImV4cCI6MTY3MjA0Mzk0Nywic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.Egr90cJ5ZCPw1keoqKTZ0D-smX8idpazXPQ8wZsWoVP8PAA20W7lAYgGuJcRm0ptjGQ6mVCviB969CsutBSDIbtbDBaviG6yu0H6vOVgnEj7MyIg5VqZOF054Wc61yhVW1E7EsMIyEpHPPVLFtDBrPBqzPY-2iLlJUWtbN7dmG45T6ojLVo4CtqmBd4xSMB-gZosvCEm-E9nqBCFLUGTu0or0yJq-eJ3P4aX-_chtIEVgR5Gx9j-PyBm6wu3B7KK_Yiyih5mf-O9SzOlQ_E48Ux7b2peIP1HT_L65Qg4D9s-KLRhI1u8lOblf_gE3EuNwPkwNR0EqbBaeDYUeTaUaQ User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token b4c553c4-51c5-4f11-a61b-24f8af8815f1 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:07 GMT Content-Type application/json; charset=utf-8 Content-Length 779 Connection keep-alive TraceId postman:sponsored-media:971e611b-677e-418f-8b7a-911d2be56716 Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "numberToDisplay": 2, "products": [ { "tpnb": "72488067", "adId": "display_M5kks-mi-1-pI6vn3rF8IKaoraAKCgoINzI0ODgwNjcSABoMCKu7pZ0GEMyj2eUBIgIIAQ==" }, { "tpnb": "82739545", "adId": "display_VUV32f7iCDmxb2qPj_uEr7aEhMMKCgoIODI3Mzk1NDUSABoMCKu7pZ0GEPiz2-UBIgIIAQ==" }, { "tpnb": "80746234", "adId": "display_68v3bVMblXof29PKGyZ5XBRlcGQKCgoIODA3NDYyMzQSABoMCKu7pZ0GENfh2-UBIgIIAQ==" }, { "tpnb": "57462736", "adId": "display_CLiJIGuUtviqrIIkiExEM1O1IGUKCgoINTc0NjI3MzYSABoMCKu7pZ0GEKKU3OUBIgIIAQ==" }, { "tpnb": "71864303", "adId": "display_WWSgXgeeNDBV7qMi65_9BI6Ii-IKCgoINzE4NjQzMDMSABoMCKu7pZ0GEPa13OUBIgIIAQ==" }, { "tpnb": "86438092", "adId": "display_SBhoa-C1ndjv88MR-BTasAGjhg0KCgoIODY0MzgwOTISABoMCKu7pZ0GELzb3OUBIgIIAQ==" }, { "tpnb": "50247945", "adId": "display_cq7TBsqIANvd5wxZn3pls1nWAIAKCgoINTAyNDc5NDUSABoMCKu7pZ0GELb93OUBIgIIAQ==" }, { "tpnb": "86698799", "adId": "display_VkITRIShqu-FJar4WBwB1ThsugsKCgoIODY2OTg3OTkSABoMCKu7pZ0GENir3eUBIgIIAQ==" }, { "tpnb": "80832823", "adId": "display_RfvgrpKZT429VIpAYEozqrND95oKCgoIODA4MzI4MjMSABoMCKu7pZ0GENrO3eUBIgIIAQ==" }, { "tpnb": "84821219", "adId": "display_d8bAcTPA8pk7zPvBcBkYCzVi2AgKCgoIODQ4MjEyMTkSABoMCKu7pZ0GELKV3uUBIgIIAQ==" }, { "tpnb": "76170718", "adId": "display_jAuH8NM9HH8e_TWI937KyfGlJugKCgoINzYxNzA3MTgSABoMCKu7pZ0GEP293uUBIgIIAQ==" }, { "tpnb": "60946990", "adId": "display_x3fQPImD6uRXi07BzC84GlBjKUkKCgoINjA5NDY5OTASABoMCKu7pZ0GEKXh3uUBIgIIAQ==" }, { "tpnb": "83175478", "adId": "display_EKRUaJ9f3DYJA5o8qgit8-eSHL0KCgoIODMxNzU0NzgSABoMCKu7pZ0GEJqP3-UBIgIIAQ==" }, { "tpnb": "60946984", "adId": "display_amCQXeNLheV_ubrCZVy7b6QvmbQKCgoINjA5NDY5ODQSABoMCKu7pZ0GEIy93-UBIgIIAQ==" }, { "tpnb": "52118410", "adId": "display_b6Tu64otEX0GA2rQeDhc1NqNU7YKCgoINTIxMTg0MTASABoMCKu7pZ0GEJfg3-UBIgIIAQ==" } ] } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Iteration: 1 - Authorized AD retrieval REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/v1/products/ads?searchTerm=ice%20cream&overriddenUUID=6da4057c-dd29-4a38-8e41-75490926ce4b RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 332ms Mean size per request: 1.64KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:b594f930-c393-4228-98cd-69d7a1c78375 tesco-customerauth Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJnRVhLMWRQQ2F3aWMxWEsweG1YbzF5Q0ZIVExFWVZfaEpQX1kiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ3LCJuYmYiOjE2NzIwNDAzNDcsImV4cCI6MTY3MjA0Mzk0Nywic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.I8SVryQhrsXEmyZEUmBW6k-cM9N2sPv0jLhdZ5mK8sKmMyQzw49tjoGUi-o877zSKnhYbW3KTe5vkOC6C_LZJN_6mZDOylg-C4Tw_zxHa_FR1ygv8KNnmb0jorm_tBXSFnRRed5ZmZATAuLSi4SlRu7cKSu-rUKQYK4Gm_h40eflnKtrYLD6vnQ9oLeWbEJleNuwlCnxe65M7Ryz_qYM8mdhnVFhv8DdgK2Ke4vPtVZrzSpGaDeV4b1O-e-LdBaK-FUoZOvEUDZJkpF4SsgM6aGrdak-IidqGgCsVNpkBfNJzM65pey9HTnDEpH6o8ynN5RSDb2Lr_iQar2n9NjIQw Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJnRVhLMWRQQ2F3aWMxWEsweG1YbzF5Q0ZIVExFWVZfaEpQX1kiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ3LCJuYmYiOjE2NzIwNDAzNDcsImV4cCI6MTY3MjA0Mzk0Nywic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.I8SVryQhrsXEmyZEUmBW6k-cM9N2sPv0jLhdZ5mK8sKmMyQzw49tjoGUi-o877zSKnhYbW3KTe5vkOC6C_LZJN_6mZDOylg-C4Tw_zxHa_FR1ygv8KNnmb0jorm_tBXSFnRRed5ZmZATAuLSi4SlRu7cKSu-rUKQYK4Gm_h40eflnKtrYLD6vnQ9oLeWbEJleNuwlCnxe65M7Ryz_qYM8mdhnVFhv8DdgK2Ke4vPtVZrzSpGaDeV4b1O-e-LdBaK-FUoZOvEUDZJkpF4SsgM6aGrdak-IidqGgCsVNpkBfNJzM65pey9HTnDEpH6o8ynN5RSDb2Lr_iQar2n9NjIQw User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 788aba3f-4620-409c-b408-066061a7c33a Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:08 GMT Content-Type application/json; charset=utf-8 Content-Length 764 Connection keep-alive TraceId postman:sponsored-media:b594f930-c393-4228-98cd-69d7a1c78375 Cache-Control no-cache Content-Language en-GB correlation-id 6da4057c-dd29-4a38-8e41-75490926ce4b content-encoding gzip RESPONSE BODY { "numberToDisplay": 2, "products": [ { "tpnb": "72488067", "adId": "display_RvPb67Ak5p6gRYc9q13ApMHZalYKCgoINzI0ODgwNjcSABoMCKu7pZ0GEKKPybcDIgIIAQ==" }, { "tpnb": "84821219", "adId": "display_ApS4wilNs4Mynugmytstr6QQZyEKCgoIODQ4MjEyMTkSABoMCKu7pZ0GEKWmy7cDIgIIAQ==" }, { "tpnb": "83175478", "adId": "display_QnH3yQJd4wTkWQdU8JBt0U9ficEKCgoIODMxNzU0NzgSABoMCKu7pZ0GEIvUy7cDIgIIAQ==" }, { "tpnb": "80832702", "adId": "display_XOPzkyb3HKhnycn_aJ3OCvSH9tcKCgoIODA4MzI3MDISABoMCKu7pZ0GEMGHzLcDIgIIAQ==" }, { "tpnb": "60946984", "adId": "display_OFOaijM9L2MtqqbI2a9JK82672AKCgoINjA5NDY5ODQSABoMCKu7pZ0GELWwzLcDIgIIAQ==" }, { "tpnb": "60946990", "adId": "display_hyVy9jLHZ6g8vWg85Y7BUr8-dOgKCgoINjA5NDY5OTASABoMCKu7pZ0GEJrgzLcDIgIIAQ==" }, { "tpnb": "88232942", "adId": "display_Efks3A0CmmjuQhfyDIchBVXmXU4KCgoIODgyMzI5NDISABoMCKu7pZ0GEOSGzbcDIgIIAQ==" }, { "tpnb": "84794072", "adId": "display_PW3Hxm4pLMtsyCHc2bGpgJ4zn9IKCgoIODQ3OTQwNzISABoMCKu7pZ0GEJWwzbcDIgIIAQ==" }, { "tpnb": "50247945", "adId": "display_tFIIfny-NXwop4dovG0S2Rv33eQKCgoINTAyNDc5NDUSABoMCKu7pZ0GEI7lzbcDIgIIAQ==" }, { "tpnb": "84821225", "adId": "display_lxADplhTFwyyiHbIzBi5htOHwYkKCgoIODQ4MjEyMjUSABoMCKu7pZ0GELaZzrcDIgIIAQ==" }, { "tpnb": "57462736", "adId": "display_SKhPtHka3Wc-84-Jv3nRntqVkG8KCgoINTc0NjI3MzYSABoMCKu7pZ0GEJDBzrcDIgIIAQ==" }, { "tpnb": "84435772", "adId": "display_UWhS3-sVXdVkfdNnqLuOOTeIVCQKCgoIODQ0MzU3NzISABoMCKu7pZ0GENrizrcDIgIIAQ==" }, { "tpnb": "84435642", "adId": "display_nvvzxrxFELqLXYcMpVYoIM48yyUKCgoIODQ0MzU2NDISABoMCKu7pZ0GEJGDz7cDIgIIAQ==" }, { "tpnb": "87885144", "adId": "display_M94nbB33WXIJ6kRBxvrWnqZhV4AKCgoIODc4ODUxNDQSABoMCKu7pZ0GEImsz7cDIgIIAQ==" }, { "tpnb": "76170718", "adId": "display_BuvQykgQ574OSjad2seytGNaOTMKCgoINzYxNzA3MTgSABoMCKu7pZ0GEKLNz7cDIgIIAQ==" } ] } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Correlation header matches user 2 0 0 Status code is 200 2 0 0 Total600 TEST FAILURE Test NameAssertion Error Sponsored Media - Placements / Placement AD - 3 Requests in the folder Iteration: 1 - Anonymous checkout placement retrieval REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/v1/products/placements/checkout RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 356ms Mean size per request: 2.61KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:8cb68fe3-8681-4baf-b0a3-5d86c5d43f99 Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJPSDlvTTdFdEJScWdaTUt3TU9xQVMxS1BZSzU1QWJGa0YzUW8iLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ4LCJuYmYiOjE2NzIwNDAzNDgsImV4cCI6MTY3MjA0Mzk0OCwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.dAQh4R4FkvaqVSnHZh-m16lr7GQ1HYyR7UjygX8CU7bt72T_Cd-e4bV4w81QQV5APYBQUqK9_lb3TmBl5OWEL5Znzm-gYECbi2Qzl4Pb2y0v2vahgOr9Asrgh9V47dYk1lptmgFOTmVvzQ67OWfY23bfNlV8eVP7R_H__925XYiS4wMafy0u0RGnKuFSd5bJ2z2PrCzn7EYIgV9tObo_3B7iy6t2JtPRORa0ucusLbVT9RNEntR_0uBx-lRUlOil9aqxuydHrNHpMiDr-sVPb7A4HrZ06oc8tk92YmJo3sO_Sv-sjgR9uLxxjVBTiFH0sVfR8xiZzvpDvdO-4sf5TA User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 9a191bcb-8d63-44ae-9249-adba59845e63 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:08 GMT Content-Type application/json; charset=utf-8 Content-Length 1144 Connection keep-alive TraceId postman:sponsored-media:8cb68fe3-8681-4baf-b0a3-5d86c5d43f99 Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "numberToDisplay": 2, "products": [ { "tpnb": "85987652", "adId": "display_qHumMnjXHsq23C557DtPO473csoKCgoIODU5ODc2NTISABoMCKy7pZ0GEIOGvKwBIgIIAQ==" }, { "tpnb": "71864314", "adId": "display_aSKaeR7jQDn0PHFdBEX9-1gDaHUKCgoINzE4NjQzMTQSABoMCKy7pZ0GELyovqwBIgIIAQ==" }, { "tpnb": "60377885", "adId": "display_YoLTsYUZlNbM0GcfG51Rx0rQiLsKCgoINjAzNzc4ODUSABoMCKy7pZ0GEP7mvqwBIgIIAQ==" }, { "tpnb": "89276021", "adId": "display_NubDSXghk_dB-LX3NidIDR1qU2IKCgoIODkyNzYwMjESABoMCKy7pZ0GENiXv6wBIgIIAQ==" }, { "tpnb": "89250005", "adId": "display_LMraMF9p_IDjKUFg6rKsvpTjMlUKCgoIODkyNTAwMDUSABoMCKy7pZ0GEPm7v6wBIgIIAQ==" }, { "tpnb": "60946984", "adId": "display_305zegpNcSQnKtE4zCshq5yOSUYKCgoINjA5NDY5ODQSABoMCKy7pZ0GEJ7yv6wBIgIIAQ==" }, { "tpnb": "84525265", "adId": "display_rOJdq8TQFgJRgj706vYYrqzG_90KCgoIODQ1MjUyNjUSABoMCKy7pZ0GEOqswKwBIgIIAQ==" }, { "tpnb": "87885144", "adId": "display_UuxIwsJB1O7UqtojFMoa4OZhKPUKCgoIODc4ODUxNDQSABoMCKy7pZ0GEKDowKwBIgIIAQ==" }, { "tpnb": "73420169", "adId": "display_OXuMU5IS2p9bsRG-OmtlvWWNiIIKCgoINzM0MjAxNjkSABoMCKy7pZ0GEOKMwawBIgIIAQ==" }, { "tpnb": "51578315", "adId": "display_9rhm0MDlQWlNvvCQb6pvkI75AKUKCgoINTE1NzgzMTUSABoMCKy7pZ0GEKu4wawBIgIIAQ==" }, { "tpnb": "73532526", "adId": "display_Z-2c9yVeWTBgebBZFGld89g2OkMKCgoINzM1MzI1MjYSABoMCKy7pZ0GEILbwawBIgIIAQ==" }, { "tpnb": "89246112", "adId": "display_pTkHuFOjwgMh0z89rDT4P9kIJpUKCgoIODkyNDYxMTISABoMCKy7pZ0GEJ37wawBIgIIAQ==" }, { "tpnb": "89265103", "adId": "display_HMo3ok33eU8jKLKmNQ2B3YszQmAKCgoIODkyNjUxMDMSABoMCKy7pZ0GEJepwqwBIgIIAQ==" }, { "tpnb": "87226804", "adId": "display_zekXPJzeMcdspGlDbskq_uy_yYIKCgoIODcyMjY4MDQSABoMCKy7pZ0GEObSwqwBIgIIAQ==" }, { "tpnb": "63661238", "adId": "display_FAE-4fz5YYL8k15XfUVF8Rpgp78KCgoINjM2NjEyMzgSABoMCKy7pZ0GEKj9wqwBIgIIAQ==" }, { "tpnb": "71864332", "adId": "display_r3_P15_rQNwUkPvWM_tjqp93JWcKCgoINzE4NjQzMzISABoMCKy7pZ0GEJqpw6wBIgIIAQ==" }, { "tpnb": "87176344", "adId": "display_vfZNuzkIAP5C1sOe1KxYlvn0pUMKCgoIODcxNzYzNDQSABoMCKy7pZ0GEITRw6wBIgIIAQ==" }, { "tpnb": "51000458", "adId": "display_WhuDYs_iWdumKRISYm2uycUQkkQKCgoINTEwMDA0NTgSABoMCKy7pZ0GEKz1w6wBIgIIAQ==" }, { "tpnb": "89249365", "adId": "display_Rd3Nmd6FR208D5MN2MWOWAQVKYYKCgoIODkyNDkzNjUSABoMCKy7pZ0GEPKnxKwBIgIIAQ==" }, { "tpnb": "63661181", "adId": "display_3hG7wBDbdEDPQO8_oyr6KwxkOUQKCgoINjM2NjExODESABoMCKy7pZ0GEMTVxKwBIgIIAQ==" }, { "tpnb": "86015353", "adId": "display_AvAqZfeXk6S33pgih_j5gPaknEcKCgoIODYwMTUzNTMSABoMCKy7pZ0GEI34xKwBIgIIAQ==" }, { "tpnb": "89448285", "adId": "display_9LtvMbtCFqt_J1wgXLC8-B78R-gKCgoIODk0NDgyODUSABoMCKy7pZ0GEJebxawBIgIIAQ==" }, { "tpnb": "87233594", "adId": "display_nJN43ppjmFfTMpd_TERf5s8K2vIKCgoIODcyMzM1OTQSABoMCKy7pZ0GEKPLxawBIgIIAQ==" }, { "tpnb": "51004688", "adId": "display_mdy50mNeYwhPLrBeGC3CdjAA3LwKCgoINTEwMDQ2ODgSABoMCKy7pZ0GEJj2xawBIgIIAQ==" } ] } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Iteration: 1 - Anonymous checkout placement retrieval - Citrus REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/v1/products/placements/checkout RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 367ms Mean size per request: 2.61KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:8f93bcd5-9f68-43a1-8c59-907ae04b267a Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJWV09QTEV2OUZpZ1Jfa1E5OW5xYmdKU3FfZXhyZmMzWXlVSTkiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ4LCJuYmYiOjE2NzIwNDAzNDgsImV4cCI6MTY3MjA0Mzk0OCwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.I4gdskcfC1F4H-oxI4eVL0rd5Yi8mAx4qzkuFge33SlzwkXneQ9taTsUWGI4NGgKMsuCvfViFrX__7EPJjHH0KW8b8bFmQ1q13VyeP3VuNj3kHvsp4BJSmhHmOWnAmBM-yctyH6HEImVFQ_ZoVQQt8jJpmDBi0rDMeF_wuksd_Gnxkgax_ZbqIogE_5bNKwczcA9igUQkztpMjo69rqpCeYraC6xAeCQp_tCq1KPholUZHW8yoceITQUVlspvvAAOLZsfZlq5uXFp3wHZmamMMzVckr3lymQvUBI4mEfeafrK9tiWov_OfoQiEVvKXwiZ_l_k9xvYPscrbRHMVVhZA User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token 425fb497-4d3a-482b-8222-3c423e99a55f Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:08 GMT Content-Type application/json; charset=utf-8 Content-Length 1138 Connection keep-alive TraceId postman:sponsored-media:8f93bcd5-9f68-43a1-8c59-907ae04b267a Cache-Control no-cache Content-Language en-GB content-encoding gzip RESPONSE BODY { "numberToDisplay": 2, "products": [ { "tpnb": "89448285", "adId": "display_gUB-eGoCrsYPOuV0W5uj36BkG-sKCgoIODk0NDgyODUSABoMCKy7pZ0GELG01IYDIgIIAQ==" }, { "tpnb": "51004688", "adId": "display_zpu6uBy-6w3bLLXMYIvNuXl-H00KCgoINTEwMDQ2ODgSABoMCKy7pZ0GEOWm1oYDIgIIAQ==" }, { "tpnb": "86015353", "adId": "display_MN235ZCtf7oONhjBimtVcLTtPGsKCgoIODYwMTUzNTMSABoMCKy7pZ0GENDT1oYDIgIIAQ==" }, { "tpnb": "71864314", "adId": "display_rRK7szRBX56yh6vWGuczu3Sk9QkKCgoINzE4NjQzMTQSABoMCKy7pZ0GEPCK14YDIgIIAQ==" }, { "tpnb": "89276021", "adId": "display_ndvQo-VZ8h-vbzWCOJw0zjCOGhgKCgoIODkyNzYwMjESABoMCKy7pZ0GEMOs14YDIgIIAQ==" }, { "tpnb": "89265103", "adId": "display_uvE00Lv6EOWJ3ye7m1p5WU3btTwKCgoIODkyNjUxMDMSABoMCKy7pZ0GELXT14YDIgIIAQ==" }, { "tpnb": "63661181", "adId": "display_Ub2RO7igs9GEAJq5eOGfDbVbVfgKCgoINjM2NjExODESABoMCKy7pZ0GEOP114YDIgIIAQ==" }, { "tpnb": "52365888", "adId": "display_RNFhmUSYhw_Tlnrr5sN1d5-FTzEKCgoINTIzNjU4ODgSABoMCKy7pZ0GEJSf2IYDIgIIAQ==" }, { "tpnb": "89249365", "adId": "display_wKosrGQBqroDrJ4P7U8Mz7NlT_IKCgoIODkyNDkzNjUSABoMCKy7pZ0GEMnH2IYDIgIIAQ==" }, { "tpnb": "73532526", "adId": "display_5RAdRC8o-zjd_7V-9X9Su8xHQ40KCgoINzM1MzI1MjYSABoMCKy7pZ0GEP3y2IYDIgIIAQ==" }, { "tpnb": "89246112", "adId": "display_YHmsFsTn55fRor8aNddg2rkvgYcKCgoIODkyNDYxMTISABoMCKy7pZ0GEOqa2YYDIgIIAQ==" }, { "tpnb": "64560834", "adId": "display_mbC7q6LNzNn5iWqKh_zohyp8pboKCgoINjQ1NjA4MzQSABoMCKy7pZ0GEL_M2YYDIgIIAQ==" }, { "tpnb": "87445882", "adId": "display_qh2MxwS1tb70JQ94QPJZU9VAs3IKCgoIODc0NDU4ODISABoMCKy7pZ0GEODt2YYDIgIIAQ==" }, { "tpnb": "73420169", "adId": "display_q4vQ66MUZ2HUocW78qkSGQFv96cKCgoINzM0MjAxNjkSABoMCKy7pZ0GEJ6X2oYDIgIIAQ==" }, { "tpnb": "71864292", "adId": "display_iXGterYCzJHseC6H2NO26IpoDCoKCgoINzE4NjQyOTISABoMCKy7pZ0GEJvQ2oYDIgIIAQ==" }, { "tpnb": "87885144", "adId": "display_qQN5tvB3wdGi-DcwEpEwORCTOB0KCgoIODc4ODUxNDQSABoMCKy7pZ0GEM_32oYDIgIIAQ==" }, { "tpnb": "71864332", "adId": "display_6SwwCqC9vng0vZCN3hhE9n6v7G0KCgoINzE4NjQzMzISABoMCKy7pZ0GEJyu24YDIgIIAQ==" }, { "tpnb": "51000458", "adId": "display_bww8q33pCmuGNZ2cGfZTZz_85b4KCgoINTEwMDA0NTgSABoMCKy7pZ0GENrS24YDIgIIAQ==" }, { "tpnb": "87226804", "adId": "display_mZOb2j9FdSjOWX2tka4xiJO02YEKCgoIODcyMjY4MDQSABoMCKy7pZ0GENqp3IYDIgIIAQ==" }, { "tpnb": "60377885", "adId": "display_04vg4lJo9Qgapt6hUabghNOuZucKCgoINjAzNzc4ODUSABoMCKy7pZ0GEN3O3IYDIgIIAQ==" }, { "tpnb": "60946984", "adId": "display_STiqwTBXnJQYgfPgzy5U0ItzgyUKCgoINjA5NDY5ODQSABoMCKy7pZ0GEIn43IYDIgIIAQ==" }, { "tpnb": "87176344", "adId": "display_xhRnCOccWnSYp3A5i2XepkUSDNwKCgoIODcxNzYzNDQSABoMCKy7pZ0GEOub3YYDIgIIAQ==" }, { "tpnb": "63661238", "adId": "display_IIZ7dxY-gLRuA39g_BitJqOVEKIKCgoINjM2NjEyMzgSABoMCKy7pZ0GEN_R3YYDIgIIAQ==" }, { "tpnb": "85987652", "adId": "display_n3NJovLXexAQv3zWuDYrTpUZXuoKCgoIODU5ODc2NTISABoMCKy7pZ0GEIT23YYDIgIIAQ==" } ] } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Status code is 200 2 0 0 Total400 TEST FAILURE Test NameAssertion Error Iteration: 1 - Authorized checkout placement REQUEST INFORMATION Request Method: GET Request URL: http://sponsored-media.euw.api.discovery-dev.tescocloud.com/sponsored-media/v1/products/placements/checkout?overriddenUUID=6da4057c-dd29-4a38-8e41-75490926ce4b RESPONSE INFORMATION Response Code: 200 - OK Mean time per request: 347ms Mean size per request: 2.52KB -------------------------------------------------------------------------------- TEST PASS PERCENTAGE 100 % REQUEST HEADERS Header NameHeader Value TraceId postman:sponsored-media:04bec044-333e-46fb-aad2-713f754d8512 tesco-customerauth Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJ5UTBfajJVRzI1V3F6MUlVRjlWYmZwQlR1RzdfaVlIeHQwUXYiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ5LCJuYmYiOjE2NzIwNDAzNDksImV4cCI6MTY3MjA0Mzk0OSwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.br3xQloA1MKWV1KgT3HJqsDBb_Ek8FbXSOWawhJN4rVbvpQGD1VzajASltv7znkRh6ZPY_wnYrJhz3FiAQwHFhQBeNlfdFocdH-2ujq8tOkHFv_GInSeEhlt5melvX3aFM0guRT2sLuUo-uEF18lYhLevYwyhXJEMU7oEq-G4EBgY8Nf-CXV9denuZ6ukOn5DEo7Z8vpKz1J2u60Kh_jMahViiO5tdqzn5gUbt-v2v887tXZxq85TqWh2xXcyK07wQlERU-4lDZ3ha_AtCh5fpRaMEsUAHuS2Tpce-N3b-ktx_5jVL528l8nZU77OLQ203pzqvl8Q1zsUJqhNyrBDg Authorization Bearer eyJraWQiOiIwNWU0ZjJkOS05MDY4LTQ5MGYtYTBmYy1jMTg4Y2NlODY5ZDciLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJ5UTBfajJVRzI1V3F6MUlVRjlWYmZwQlR1RzdfaVlIeHQwUXYiLCJpc3MiOiJodHRwczovL2FwaS1wcGUudGVzY28uY29tL2lkZW50aXR5L3Y0L2lzc3VlLXRva2VuIiwic3ViIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwiaWF0IjoxNjcyMDQwMzQ5LCJuYmYiOjE2NzIwNDAzNDksImV4cCI6MTY3MjA0Mzk0OSwic2NvcGUiOiJpbnRlcm5hbCBwdWJsaWMiLCJjb25maWRlbmNlX2xldmVsIjoxMiwiY2xpZW50X2lkIjoiYWZjN2Q5NjYtNmQzNC00OGRlLWE5OGMtMjI2OTVlOTM2ODk2IiwidG9rZW5fdHlwZSI6ImJlYXJlciJ9.br3xQloA1MKWV1KgT3HJqsDBb_Ek8FbXSOWawhJN4rVbvpQGD1VzajASltv7znkRh6ZPY_wnYrJhz3FiAQwHFhQBeNlfdFocdH-2ujq8tOkHFv_GInSeEhlt5melvX3aFM0guRT2sLuUo-uEF18lYhLevYwyhXJEMU7oEq-G4EBgY8Nf-CXV9denuZ6ukOn5DEo7Z8vpKz1J2u60Kh_jMahViiO5tdqzn5gUbt-v2v887tXZxq85TqWh2xXcyK07wQlERU-4lDZ3ha_AtCh5fpRaMEsUAHuS2Tpce-N3b-ktx_5jVL528l8nZU77OLQ203pzqvl8Q1zsUJqhNyrBDg User-Agent PostmanRuntime/7.29.0 Accept */* Cache-Control no-cache Postman-Token a79944fc-40cc-4508-9a6c-c6526697e1f2 Host sponsored-media.euw.api.discovery-dev.tescocloud.com Accept-Encoding gzip, deflate, br Connection keep-alive RESPONSE HEADERS Header NameHeader Value Date Mon, 26 Dec 2022 07:39:09 GMT Content-Type application/json; charset=utf-8 Content-Length 1138 Connection keep-alive TraceId postman:sponsored-media:04bec044-333e-46fb-aad2-713f754d8512 Cache-Control no-cache Content-Language en-GB correlation-id 6da4057c-dd29-4a38-8e41-75490926ce4b content-encoding gzip RESPONSE BODY { "numberToDisplay": 2, "products": [ { "tpnb": "63661238", "adId": "display_ta7qZ_fDJJMHVXgPgjY1n2YW6fUKCgoINjM2NjEyMzgSABoLCK27pZ0GEIylonYiAggB" }, { "tpnb": "52365888", "adId": "display_MEhuun6RLUFbBTiDd9C31HZBNnMKCgoINTIzNjU4ODgSABoLCK27pZ0GEMCjpHYiAggB" }, { "tpnb": "89250005", "adId": "display_aWeb7M8A6ZTH-2EnD7u9oB7ksNkKCgoIODkyNTAwMDUSABoLCK27pZ0GEPzSpHYiAggB" }, { "tpnb": "51578315", "adId": "display_U6Qh8PAmD2nFn_P49u_Tm5MH9-MKCgoINTE1NzgzMTUSABoLCK27pZ0GEK-NpXYiAggB" }, { "tpnb": "64560834", "adId": "display_JsHfP1SuzASJgRiKLrmG2l5obJQKCgoINjQ1NjA4MzQSABoLCK27pZ0GENGmpnYiAggB" }, { "tpnb": "89249365", "adId": "display_AyVgkkjS9xVtG0BgIgPT_Cgm4f4KCgoIODkyNDkzNjUSABoLCK27pZ0GEKD6pnYiAggB" }, { "tpnb": "60377885", "adId": "display_KigG2VJJ_vR_4YHKQ3DzLYJ7YIQKCgoINjAzNzc4ODUSABoLCK27pZ0GELKyp3YiAggB" }, { "tpnb": "89276021", "adId": "display_tYL2AuUDGQstR2ia1UAlHbQPy4AKCgoIODkyNzYwMjESABoLCK27pZ0GEMX3p3YiAggB" }, { "tpnb": "85987652", "adId": "display_WPZ5H7fkHRWnHeemyfNDRTPNHZIKCgoIODU5ODc2NTISABoLCK27pZ0GELqzqHYiAggB" }, { "tpnb": "73532526", "adId": "display_-uemX-Ios3NV92VRbyHqoZFfbfMKCgoINzM1MzI1MjYSABoLCK27pZ0GEN3CqXYiAggB" }, { "tpnb": "87445882", "adId": "display_clvGyTCKiqEjvye4TyMG6nzjR5IKCgoIODc0NDU4ODISABoLCK27pZ0GENqBqnYiAggB" }, { "tpnb": "63661181", "adId": "display_RnDZpVIC08STjb9-g7srynmnYTUKCgoINjM2NjExODESABoLCK27pZ0GEPGtqnYiAggB" }, { "tpnb": "86015353", "adId": "display_vuLToY9eby7NClFgMml2oO6TTfIKCgoIODYwMTUzNTMSABoLCK27pZ0GENPgqnYiAggB" }, { "tpnb": "87226804", "adId": "display_T5QeIrXgqK131Rp68E2Npiv_v2oKCgoIODcyMjY4MDQSABoLCK27pZ0GEK-aq3YiAggB" }, { "tpnb": "71864292", "adId": "display_mwWSX4_43vF1uNly9v3w6f0-73IKCgoINzE4NjQyOTISABoLCK27pZ0GENrlq3YiAggB" }, { "tpnb": "89265103", "adId": "display_1CAQiO6M-H1nAslecV9yhps2IRoKCgoIODkyNjUxMDMSABoLCK27pZ0GEIijrHYiAggB" }, { "tpnb": "87233594", "adId": "display_m7WCOjukanowwGP-bEgstDI6zcMKCgoIODcyMzM1OTQSABoLCK27pZ0GEInnrHYiAggB" }, { "tpnb": "84525265", "adId": "display_uEjzWt1opkTXRZGDGS811bRcDTsKCgoIODQ1MjUyNjUSABoLCK27pZ0GEJqwrXYiAggB" }, { "tpnb": "87176344", "adId": "display_t0KZ9mRKcP78gD8Ao_kUa4wMVCAKCgoIODcxNzYzNDQSABoLCK27pZ0GEOWArnYiAggB" }, { "tpnb": "73420169", "adId": "display_KcbmWr_b1-cVP7ugvIIEquE9nvEKCgoINzM0MjAxNjkSABoLCK27pZ0GEJzFrnYiAggB" }, { "tpnb": "71864303", "adId": "display_mAQTJuUvxtEYbSSmMcYwTfONO7IKCgoINzE4NjQzMDMSABoLCK27pZ0GEOr-rnYiAggB" }, { "tpnb": "87885144", "adId": "display_1g69CVkgfnup2Jylq-h6tTAdfJ0KCgoIODc4ODUxNDQSABoLCK27pZ0GELCyr3YiAggB" }, { "tpnb": "89246112", "adId": "display_GiwZ-ENu3DpukZ_1ccPfAEtRmG8KCgoIODkyNDYxMTISABoLCK27pZ0GELbZr3YiAggB" }, { "tpnb": "51004688", "adId": "display_NtnBBdn6KL5liZjE4G_0TrI8LuwKCgoINTEwMDQ2ODgSABoLCK27pZ0GEL37r3YiAggB" } ] } Copy to Clipboard TEST INFORMATION Search: NamePassedFailedSkipped Body matches string 2 0 0 Correlation header matches user 2 0 0 Status code is 200 2 0 0 Total600 TEST FAILURE Test NameAssertion Error