diff --git a/PostmanCollections/VTEX - Ads API.json b/PostmanCollections/VTEX - Ads API.json index ae984bdb90..ad0821732a 100644 --- a/PostmanCollections/VTEX - Ads API.json +++ b/PostmanCollections/VTEX - Ads API.json @@ -1,23 +1,23 @@ { "_": { - "postman_id": "329e4de0-a0cf-46a5-a5f4-07330abbe3b0" + "postman_id": "077af938-c609-4535-8a3f-d2fcfa33c198" }, "item": [ { - "id": "342405e3-68a0-49f3-a492-715a53da6360", - "name": "Catalog Synchronization", + "id": "33e563b0-63eb-4c7f-a2ab-2cb03ba4d8f7", + "name": "Catalog synchronization", "description": { "content": "", "type": "text/plain" }, "item": [ { - "id": "5af53d2d-aad7-46ba-bfb8-e396d6c3cbe8", + "id": "add4415c-05bc-4fd0-9448-1c48a8630cfc", "name": "Synchronize product information", "request": { "name": "Synchronize product information", "description": { - "content": "Update the basic product data in the VTEX Ads catalog. For each batch insert/update, a maximum of 500 objects per request and 3 simultaneous requests are allowed.", + "content": "Update the basic product data in the VTEX Ads catalog.\r\n\r\n>⚠️ For each batch insert/update, a maximum of 500 objects per request and 3 simultaneous requests are allowed.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", "type": "text/plain" }, "url": { @@ -51,24 +51,6 @@ "key": "Accept", "value": "application/json" }, - { - "disabled": false, - "description": { - "content": "(Required) Publisher App ID for authorization.", - "type": "text/plain" - }, - "key": "X-App-Id", - "value": "" - }, - { - "disabled": false, - "description": { - "content": "(Required) API Key for authentication.", - "type": "text/plain" - }, - "key": "X-Api-Key", - "value": "" - }, { "key": "Content-Type", "value": "application/json" @@ -81,7 +63,7 @@ "method": "POST", "body": { "mode": "raw", - "raw": "[\n {\n \"product_sku\": \"teste-120210\",\n \"name\": \"Notebook Samsung Intel Celeron-6305 NP550XDA-KP3BR 4GB 256GB SSD Tela 15,6\\\" Windows 11 - Cinza Chumbo\",\n \"url\": \"https://www.americanas.com.br/produto/4100903080\",\n \"image_url\": \"https://images-americanas.b2w.io/produtos/01/00/img/4100903/1/4100903143_1GG.jpg\",\n \"categories\": [\n \"Informática\",\n \"Notebooks\"\n ],\n \"brand\": \"Samsung\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"metadata\": {\n \"key\": \"value1\"\n }\n },\n {\n \"product_sku\": \"teste-120211\",\n \"name\": \"Notebook Samsung Intel Celeron-6305 NP550XDA-KP3BR 4GB 256GB SSD Tela 15,6\\\" Windows 11 - Cinza Chumbo\",\n \"url\": \"https://www.americanas.com.br/produto/4100903080\",\n \"categories\": [\n \"Informática\",\n \"Notebooks\"\n ],\n \"brand\": \"Samsung\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"tags\": [\n \"Mega Maio\"\n ]\n }\n]", + "raw": "[\n {\n \"product_sku\": \"sample-120210\",\n \"name\": \"TechBrand Laptop Model X-15 4GB 256GB SSD 15.6\\\" Display Windows 11 - Gray\",\n \"url\": \"https://www.example.com/product/4100903080\",\n \"image_url\": \"https://images.example.com/products/01/00/img/4100903/1/4100903143_1GG.jpg\",\n \"categories\": [\n \"Computers\",\n \"Laptops\"\n ],\n \"brand\": \"TechBrand\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"metadata\": {\n \"key\": \"value1\"\n }\n },\n {\n \"product_sku\": \"sample-120211\",\n \"name\": \"TechBrand Laptop Model X-15 4GB 256GB SSD 15.6\\\" Display Windows 11 - Gray\",\n \"url\": \"https://www.example.com/product/4100903080\",\n \"categories\": [\n \"Computers\",\n \"Laptops\"\n ],\n \"brand\": \"TechBrand\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"tags\": [\n \"Mega Maio\"\n ]\n }\n]", "options": { "raw": { "headerFamily": "json", @@ -95,7 +77,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "ca9b980a-3aa1-43c9-92c4-c9630bcf6cda", + "id": "212178f0-2321-46f4-aac2-96a2f139dc28", "name": "Accepted", "originalRequest": { "url": { @@ -129,24 +111,6 @@ "key": "Accept", "value": "application/json" }, - { - "disabled": false, - "description": { - "content": "(Required) Publisher App ID for authorization.", - "type": "text/plain" - }, - "key": "X-App-Id", - "value": "" - }, - { - "disabled": false, - "description": { - "content": "(Required) API Key for authentication.", - "type": "text/plain" - }, - "key": "X-Api-Key", - "value": "" - }, { "key": "Content-Type", "value": "application/json" @@ -154,12 +118,20 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", "body": { "mode": "raw", - "raw": "[\n {\n \"product_sku\": \"teste-120210\",\n \"name\": \"Notebook Samsung Intel Celeron-6305 NP550XDA-KP3BR 4GB 256GB SSD Tela 15,6\\\" Windows 11 - Cinza Chumbo\",\n \"url\": \"https://www.americanas.com.br/produto/4100903080\",\n \"image_url\": \"https://images-americanas.b2w.io/produtos/01/00/img/4100903/1/4100903143_1GG.jpg\",\n \"categories\": [\n \"Informática\",\n \"Notebooks\"\n ],\n \"brand\": \"Samsung\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"metadata\": {\n \"key\": \"value1\"\n }\n },\n {\n \"product_sku\": \"teste-120211\",\n \"name\": \"Notebook Samsung Intel Celeron-6305 NP550XDA-KP3BR 4GB 256GB SSD Tela 15,6\\\" Windows 11 - Cinza Chumbo\",\n \"url\": \"https://www.americanas.com.br/produto/4100903080\",\n \"categories\": [\n \"Informática\",\n \"Notebooks\"\n ],\n \"brand\": \"Samsung\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"tags\": [\n \"Mega Maio\"\n ]\n }\n]", + "raw": "[\n {\n \"product_sku\": \"sample-120210\",\n \"name\": \"TechBrand Laptop Model X-15 4GB 256GB SSD 15.6\\\" Display Windows 11 - Gray\",\n \"url\": \"https://www.example.com/product/4100903080\",\n \"image_url\": \"https://images.example.com/products/01/00/img/4100903/1/4100903143_1GG.jpg\",\n \"categories\": [\n \"Computers\",\n \"Laptops\"\n ],\n \"brand\": \"TechBrand\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"metadata\": {\n \"key\": \"value1\"\n }\n },\n {\n \"product_sku\": \"sample-120211\",\n \"name\": \"TechBrand Laptop Model X-15 4GB 256GB SSD 15.6\\\" Display Windows 11 - Gray\",\n \"url\": \"https://www.example.com/product/4100903080\",\n \"categories\": [\n \"Computers\",\n \"Laptops\"\n ],\n \"brand\": \"TechBrand\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"tags\": [\n \"Mega Maio\"\n ]\n }\n]", "options": { "raw": { "headerFamily": "json", @@ -183,7 +155,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "d8b29678-eb5f-441d-9427-cbdd36591159", + "id": "88b62a6b-eba0-428a-ab6a-5561f589b4fa", "name": "Validation Error", "originalRequest": { "url": { @@ -217,24 +189,6 @@ "key": "Accept", "value": "application/json" }, - { - "disabled": false, - "description": { - "content": "(Required) Publisher App ID for authorization.", - "type": "text/plain" - }, - "key": "X-App-Id", - "value": "" - }, - { - "disabled": false, - "description": { - "content": "(Required) API Key for authentication.", - "type": "text/plain" - }, - "key": "X-Api-Key", - "value": "" - }, { "key": "Content-Type", "value": "application/json" @@ -242,12 +196,20 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", "body": { "mode": "raw", - "raw": "[\n {\n \"product_sku\": \"teste-120210\",\n \"name\": \"Notebook Samsung Intel Celeron-6305 NP550XDA-KP3BR 4GB 256GB SSD Tela 15,6\\\" Windows 11 - Cinza Chumbo\",\n \"url\": \"https://www.americanas.com.br/produto/4100903080\",\n \"image_url\": \"https://images-americanas.b2w.io/produtos/01/00/img/4100903/1/4100903143_1GG.jpg\",\n \"categories\": [\n \"Informática\",\n \"Notebooks\"\n ],\n \"brand\": \"Samsung\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"metadata\": {\n \"key\": \"value1\"\n }\n },\n {\n \"product_sku\": \"teste-120211\",\n \"name\": \"Notebook Samsung Intel Celeron-6305 NP550XDA-KP3BR 4GB 256GB SSD Tela 15,6\\\" Windows 11 - Cinza Chumbo\",\n \"url\": \"https://www.americanas.com.br/produto/4100903080\",\n \"categories\": [\n \"Informática\",\n \"Notebooks\"\n ],\n \"brand\": \"Samsung\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"tags\": [\n \"Mega Maio\"\n ]\n }\n]", + "raw": "[\n {\n \"product_sku\": \"sample-120210\",\n \"name\": \"TechBrand Laptop Model X-15 4GB 256GB SSD 15.6\\\" Display Windows 11 - Gray\",\n \"url\": \"https://www.example.com/product/4100903080\",\n \"image_url\": \"https://images.example.com/products/01/00/img/4100903/1/4100903143_1GG.jpg\",\n \"categories\": [\n \"Computers\",\n \"Laptops\"\n ],\n \"brand\": \"TechBrand\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"metadata\": {\n \"key\": \"value1\"\n }\n },\n {\n \"product_sku\": \"sample-120211\",\n \"name\": \"TechBrand Laptop Model X-15 4GB 256GB SSD 15.6\\\" Display Windows 11 - Gray\",\n \"url\": \"https://www.example.com/product/4100903080\",\n \"categories\": [\n \"Computers\",\n \"Laptops\"\n ],\n \"brand\": \"TechBrand\",\n \"gtins\": [\n \"7898915633481\"\n ],\n \"tags\": [\n \"Mega Maio\"\n ]\n }\n]", "options": { "raw": { "headerFamily": "json", @@ -264,7 +226,7 @@ "value": "application/json" } ], - "body": "[\n {\n \"instancePath\": \"eu\",\n \"schemaPath\": \"sunt dolor dolore Lorem ad\",\n \"keyword\": \"in\",\n \"params\": {},\n \"message\": \"proident nostrud eu officia\"\n },\n {\n \"instancePath\": \"velit qui\",\n \"schemaPath\": \"sint Ut occaecat laboris\",\n \"keyword\": \"ullamco\",\n \"params\": {},\n \"message\": \"occaecat dolo\"\n }\n]", + "body": "[\n {\n \"instancePath\": \"/0\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"product_sku\"\n },\n \"message\": \"must have required property 'product_sku'\"\n },\n {\n \"instancePath\": \"/0\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"url\"\n },\n \"message\": \"must have required property 'url'\"\n },\n {\n \"instancePath\": \"/0\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"image_url\"\n },\n \"message\": \"must have required property 'image_url'\"\n },\n {\n \"instancePath\": \"/1\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"name\"\n },\n \"message\": \"must have required property 'name'\"\n },\n {\n \"instancePath\": \"/1\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"url\"\n },\n \"message\": \"must have required property 'url'\"\n },\n {\n \"instancePath\": \"/1\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"image_url\"\n },\n \"message\": \"must have required property 'image_url'\"\n }\n]", "cookie": [] } ], @@ -272,7 +234,7 @@ { "listen": "test", "script": { - "id": "fa832fd6-cc06-4f6d-93d7-c21af8cc252f", + "id": "a8b586d8-ce50-4cf8-8786-710895db91a2", "type": "text/javascript", "exec": [ "// Validate status 2xx \npm.test(\"[POST]::/product/bulk/products - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", @@ -288,12 +250,12 @@ } }, { - "id": "1cc73c67-8890-40db-91e1-0be0a79adf9c", + "id": "69592e31-fec9-499d-95ad-5858368d5a14", "name": "Synchronize inventory information", "request": { "name": "Synchronize inventory information", "description": { - "content": "Update inventory information, which defines the price, promotional price, and product availability. For each batch insert/update, a maximum of 500 objects per request and 3 simultaneous requests are allowed.", + "content": "Update inventory information, which defines the price, promotional price, and product availability.\r\n\r\n>⚠️ For each batch insert/update, a maximum of 500 objects per request and 3 simultaneous requests are allowed.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", "type": "text/plain" }, "url": { @@ -327,24 +289,6 @@ "key": "Accept", "value": "application/json" }, - { - "disabled": false, - "description": { - "content": "(Required) Publisher App ID for authorization.", - "type": "text/plain" - }, - "key": "X-App-Id", - "value": "" - }, - { - "disabled": false, - "description": { - "content": "(Required) API Key for authentication.", - "type": "text/plain" - }, - "key": "X-Api-Key", - "value": "" - }, { "key": "Content-Type", "value": "application/json" @@ -371,7 +315,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "f466c782-6e51-4b97-afec-d97d28910802", + "id": "8b4b3cd5-826b-4824-9ec9-7cbe08a5bf5c", "name": "Accepted", "originalRequest": { "url": { @@ -405,24 +349,6 @@ "key": "Accept", "value": "application/json" }, - { - "disabled": false, - "description": { - "content": "(Required) Publisher App ID for authorization.", - "type": "text/plain" - }, - "key": "X-App-Id", - "value": "" - }, - { - "disabled": false, - "description": { - "content": "(Required) API Key for authentication.", - "type": "text/plain" - }, - "key": "X-Api-Key", - "value": "" - }, { "key": "Content-Type", "value": "application/json" @@ -430,6 +356,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -459,7 +393,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "6f603fa2-fb49-4019-bed0-8bb49e94ec82", + "id": "c58e40da-d4c4-486c-9ddf-7056bb809451", "name": "Validation Error", "originalRequest": { "url": { @@ -493,24 +427,6 @@ "key": "Accept", "value": "application/json" }, - { - "disabled": false, - "description": { - "content": "(Required) Publisher App ID for authorization.", - "type": "text/plain" - }, - "key": "X-App-Id", - "value": "" - }, - { - "disabled": false, - "description": { - "content": "(Required) API Key for authentication.", - "type": "text/plain" - }, - "key": "X-Api-Key", - "value": "" - }, { "key": "Content-Type", "value": "application/json" @@ -518,6 +434,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -540,7 +464,7 @@ "value": "application/json" } ], - "body": "[\n {\n \"instancePath\": \"eu\",\n \"schemaPath\": \"sunt dolor dolore Lorem ad\",\n \"keyword\": \"in\",\n \"params\": {},\n \"message\": \"proident nostrud eu officia\"\n },\n {\n \"instancePath\": \"velit qui\",\n \"schemaPath\": \"sint Ut occaecat laboris\",\n \"keyword\": \"ullamco\",\n \"params\": {},\n \"message\": \"occaecat dolo\"\n }\n]", + "body": "[\n {\n \"instancePath\": \"/0\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"product_sku\"\n },\n \"message\": \"must have required property 'product_sku'\"\n },\n {\n \"instancePath\": \"/0\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"promotional_price\"\n },\n \"message\": \"must have required property 'promotional_price'\"\n },\n {\n \"instancePath\": \"/0\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"is_available\"\n },\n \"message\": \"must have required property 'is_available'\"\n },\n {\n \"instancePath\": \"/1\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"price\"\n },\n \"message\": \"must have required property 'price'\"\n },\n {\n \"instancePath\": \"/1\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"promotional_price\"\n },\n \"message\": \"must have required property 'promotional_price'\"\n },\n {\n \"instancePath\": \"/1\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"is_available\"\n },\n \"message\": \"must have required property 'is_available'\"\n },\n {\n \"instancePath\": \"/2\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"price\"\n },\n \"message\": \"must have required property 'price'\"\n },\n {\n \"instancePath\": \"/2\",\n \"schemaPath\": \"#/items/required\",\n \"keyword\": \"required\",\n \"params\": {\n \"missingProperty\": \"is_available\"\n },\n \"message\": \"must have required property 'is_available'\"\n }\n]", "cookie": [] } ], @@ -548,7 +472,7 @@ { "listen": "test", "script": { - "id": "9501f0a7-ef74-4c5a-b1db-1cbd0a05548a", + "id": "c2c67a11-5177-4529-b83a-470c7c665be8", "type": "text/javascript", "exec": [ "// Validate status 2xx \npm.test(\"[POST]::/product/bulk/inventories - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", @@ -567,20 +491,20 @@ "event": [] }, { - "id": "a2dfdfab-f42f-4408-8399-8d6234105551", - "name": "Beacon Events", + "id": "5cc14455-5485-43f1-b122-b44a7a60d1a4", + "name": "Ads events notification", "description": { "content": "", "type": "text/plain" }, "item": [ { - "id": "3aa3f79a-06f6-4fbf-938a-1568ee7a89ef", + "id": "7a78bba6-f178-4e1e-bbd4-4ad229e43e58", "name": "Track ad impressions", "request": { "name": "Track ad impressions", "description": { - "content": "Track when an ad is rendered or visible to a user. The event URL must not be constructed manually—always use the URL provided from the ad query.", + "content": "Track when an ad is rendered or visible to a user. The event URL must not be constructed manually — always use the URL provided from `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", "type": "text/plain" }, "url": { @@ -597,7 +521,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -608,7 +532,7 @@ { "disabled": false, "description": { - "content": "(Required) Unique identifier of the ad", + "content": "(Required) Unique identifier of the ad.", "type": "text/plain" }, "type": "any", @@ -662,7 +586,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "e471ea31-ae8d-4abb-b485-cc6130e853be", + "id": "1d9ab2c5-db4a-4647-b998-f951811293eb", "name": "Accepted", "originalRequest": { "url": { @@ -679,7 +603,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -714,6 +638,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -743,7 +675,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "588bf8ae-236b-4a2a-9e36-7e5578a7cbee", + "id": "e4139f1a-1586-4167-800e-e76189f3ff5f", "name": "Validation Error", "originalRequest": { "url": { @@ -760,7 +692,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -795,6 +727,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -817,7 +757,7 @@ "value": "application/json" } ], - "body": "[\n {\n \"instancePath\": \"consectetur in sed culpa\",\n \"keyword\": \"occaecat magna do\",\n \"message\": \"veniam nisi\",\n \"params\": {},\n \"schemaPath\": \"exercitation consequat aliqua\"\n },\n {\n \"instancePath\": \"in exercitation\",\n \"keyword\": \"aliqua Duis exercitation\",\n \"message\": \"in cillum\",\n \"params\": {},\n \"schemaPath\": \"aliqua dolor aliquip\"\n }\n]", + "body": "[\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'user_id'\",\n \"params\": {\n \"missingProperty\": \"user_id\"\n },\n \"schemaPath\": \"#/anyOf/0/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'session_id'\",\n \"params\": {\n \"missingProperty\": \"session_id\"\n },\n \"schemaPath\": \"#/anyOf/1/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"anyOf\",\n \"message\": \"must match a schema in anyOf\",\n \"params\": {},\n \"schemaPath\": \"#/anyOf\"\n }\n]", "cookie": [] } ], @@ -825,7 +765,7 @@ { "listen": "test", "script": { - "id": "8541c8bb-1b75-4484-8b34-dc1d027c6180", + "id": "de0f301c-132f-441c-994d-9d29d77c4819", "type": "text/javascript", "exec": [ "// Validate status 2xx \npm.test(\"[POST]::/v1/beacon/impression/:ad_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", @@ -841,12 +781,12 @@ } }, { - "id": "83b7989f-d567-4a2e-9bac-6d805a9f6b98", + "id": "2d0719a9-8ce3-4d08-84f2-130d4f45556e", "name": "Track ad clicks", "request": { "name": "Track ad clicks", "description": { - "content": "Track when a user clicks on an ad. The event URL must not be constructed manually—always use the URL provided from the ad query.", + "content": "Track when a user clicks on an ad. The event URL must not be constructed manually — always use the URL provided from `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", "type": "text/plain" }, "url": { @@ -863,7 +803,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -874,7 +814,7 @@ { "disabled": false, "description": { - "content": "(Required) Unique identifier of the ad", + "content": "(Required) Unique identifier of the ad.", "type": "text/plain" }, "type": "any", @@ -928,7 +868,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "fd419385-30e1-4965-800f-39430d665b2e", + "id": "4c39c790-5c9f-4849-95f3-a91e893abba5", "name": "Accepted", "originalRequest": { "url": { @@ -945,7 +885,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -980,6 +920,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -1009,7 +957,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "fd507eab-2b65-4a06-b6f2-efbc1d90f3cf", + "id": "9e5c30ed-623b-4c8b-a836-d9ecca794ff2", "name": "Validation Error", "originalRequest": { "url": { @@ -1026,7 +974,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -1061,6 +1009,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -1083,7 +1039,7 @@ "value": "application/json" } ], - "body": "[\n {\n \"instancePath\": \"consectetur in sed culpa\",\n \"keyword\": \"occaecat magna do\",\n \"message\": \"veniam nisi\",\n \"params\": {},\n \"schemaPath\": \"exercitation consequat aliqua\"\n },\n {\n \"instancePath\": \"in exercitation\",\n \"keyword\": \"aliqua Duis exercitation\",\n \"message\": \"in cillum\",\n \"params\": {},\n \"schemaPath\": \"aliqua dolor aliquip\"\n }\n]", + "body": "[\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'user_id'\",\n \"params\": {\n \"missingProperty\": \"user_id\"\n },\n \"schemaPath\": \"#/anyOf/0/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'session_id'\",\n \"params\": {\n \"missingProperty\": \"session_id\"\n },\n \"schemaPath\": \"#/anyOf/1/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"anyOf\",\n \"message\": \"must match a schema in anyOf\",\n \"params\": {},\n \"schemaPath\": \"#/anyOf\"\n }\n]", "cookie": [] } ], @@ -1091,7 +1047,7 @@ { "listen": "test", "script": { - "id": "2ed6204e-c48f-4582-8a28-f5890079f433", + "id": "38a6b6b4-9680-44c2-ac71-611ea9571e36", "type": "text/javascript", "exec": [ "// Validate status 2xx \npm.test(\"[POST]::/v1/beacon/click/:ad_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", @@ -1107,12 +1063,12 @@ } }, { - "id": "1ffa1212-a2a0-423f-901f-00a3e537723d", + "id": "ea92b1a5-c07b-4eaf-9331-898c245ccecf", "name": "Track ad views", "request": { "name": "Track ad views", "description": { - "content": "Track views for banner ads. The event URL must not be constructed manually—always use the URL provided from the ad query.", + "content": "Track views for banner ads. The event URL must not be constructed manually — always use the URL provided from `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", "type": "text/plain" }, "url": { @@ -1129,7 +1085,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -1140,7 +1096,7 @@ { "disabled": false, "description": { - "content": "(Required) Unique identifier of the ad", + "content": "(Required) Unique identifier of the ad.", "type": "text/plain" }, "type": "any", @@ -1194,7 +1150,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "abcc93c5-39be-4cc3-9ae0-f8f60874ba64", + "id": "0704ccf6-5264-4f96-8eee-a0ed7d883330", "name": "Accepted", "originalRequest": { "url": { @@ -1211,7 +1167,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -1246,6 +1202,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -1275,7 +1239,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "14c66c33-56c3-4873-ab9c-5338597dfd34", + "id": "161b9aaf-d6f6-4838-b67b-d48263d109eb", "name": "Validation Error", "originalRequest": { "url": { @@ -1292,7 +1256,7 @@ { "disabled": true, "description": { - "content": "Position of the ad", + "content": "Position of the ad.", "type": "text/plain" }, "key": "pos", @@ -1327,6 +1291,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -1349,7 +1321,7 @@ "value": "application/json" } ], - "body": "[\n {\n \"instancePath\": \"consectetur in sed culpa\",\n \"keyword\": \"occaecat magna do\",\n \"message\": \"veniam nisi\",\n \"params\": {},\n \"schemaPath\": \"exercitation consequat aliqua\"\n },\n {\n \"instancePath\": \"in exercitation\",\n \"keyword\": \"aliqua Duis exercitation\",\n \"message\": \"in cillum\",\n \"params\": {},\n \"schemaPath\": \"aliqua dolor aliquip\"\n }\n]", + "body": "[\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'user_id'\",\n \"params\": {\n \"missingProperty\": \"user_id\"\n },\n \"schemaPath\": \"#/anyOf/0/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'session_id'\",\n \"params\": {\n \"missingProperty\": \"session_id\"\n },\n \"schemaPath\": \"#/anyOf/1/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"anyOf\",\n \"message\": \"must match a schema in anyOf\",\n \"params\": {},\n \"schemaPath\": \"#/anyOf\"\n }\n]", "cookie": [] } ], @@ -1357,7 +1329,7 @@ { "listen": "test", "script": { - "id": "0143b20c-6928-41da-846f-ec0e44269196", + "id": "f130f4d0-068b-4e22-9be8-20227000f844", "type": "text/javascript", "exec": [ "// Validate status 2xx \npm.test(\"[POST]::/v1/beacon/view/:ad_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", @@ -1373,12 +1345,12 @@ } }, { - "id": "8315fd39-05d3-4193-9fae-c06926ba4c39", + "id": "7a648ee7-f9dd-4660-98bf-1e60c8ff4a36", "name": "Track conversions", "request": { "name": "Track conversions", "description": { - "content": "Track when an ad leads to a purchase. This endpoint is used to notify one or more orders (sending them in a batch).", + "content": "Track when an ad leads to a purchase. This endpoint is used to notify one or more orders (sending them in a batch).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", "type": "text/plain" }, "url": { @@ -1438,7 +1410,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "904c4b0a-ae40-477c-b0dc-380d2b442384", + "id": "beea1b5f-3393-4b77-8361-e7222885eec8", "name": "Accepted", "originalRequest": { "url": { @@ -1479,6 +1451,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -1508,7 +1488,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "d2bf2a52-6c72-46a0-9991-a8036a6404b7", + "id": "c83f7b58-337e-47ce-90d1-fc8f22ad6e73", "name": "Validation Error", "originalRequest": { "url": { @@ -1549,6 +1529,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -1571,7 +1559,7 @@ "value": "application/json" } ], - "body": "[\n {\n \"instancePath\": \"consectetur in sed culpa\",\n \"keyword\": \"occaecat magna do\",\n \"message\": \"veniam nisi\",\n \"params\": {},\n \"schemaPath\": \"exercitation consequat aliqua\"\n },\n {\n \"instancePath\": \"in exercitation\",\n \"keyword\": \"aliqua Duis exercitation\",\n \"message\": \"in cillum\",\n \"params\": {},\n \"schemaPath\": \"aliqua dolor aliquip\"\n }\n]", + "body": "[\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'user_id'\",\n \"params\": {\n \"missingProperty\": \"user_id\"\n },\n \"schemaPath\": \"#/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'order_id'\",\n \"params\": {\n \"missingProperty\": \"order_id\"\n },\n \"schemaPath\": \"#/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'publisher_id'\",\n \"params\": {\n \"missingProperty\": \"publisher_id\"\n },\n \"schemaPath\": \"#/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'items'\",\n \"params\": {\n \"missingProperty\": \"items\"\n },\n \"schemaPath\": \"#/required\"\n },\n {\n \"instancePath\": \"\",\n \"keyword\": \"required\",\n \"message\": \"must have required property 'created_at'\",\n \"params\": {\n \"missingProperty\": \"created_at\"\n },\n \"schemaPath\": \"#/required\"\n }\n]", "cookie": [] } ], @@ -1579,7 +1567,7 @@ { "listen": "test", "script": { - "id": "ce6aef2e-b9bd-41a5-88ab-0cc0ea2e1bad", + "id": "5c3c2ce6-5924-404d-a5da-3a66e9d53feb", "type": "text/javascript", "exec": [ "// Validate status 2xx \npm.test(\"[POST]::/v1/beacon/conversion - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", @@ -1598,20 +1586,20 @@ "event": [] }, { - "id": "3c7b359e-65c6-497a-8a98-b41ebacdd296", - "name": "Retrieving Ads", + "id": "11f4daea-aad8-4219-a752-48dc274ed2c0", + "name": "Ads", "description": { "content": "", "type": "text/plain" }, "item": [ { - "id": "9618b717-667c-4c40-871f-46fe1da98d46", + "id": "3ec4ed82-1f75-475a-9bf3-3b4b0005e06c", "name": "Get ads", "request": { "name": "Get ads", "description": { - "content": "Retrieve Product and Banner ad formats based on context and placements.", + "content": "Retrieve Product and Banner ad formats based on context and placements.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", "type": "text/plain" }, "url": { @@ -1682,7 +1670,7 @@ "_": { "postman_previewlanguage": "json" }, - "id": "a00605af-d6e6-4883-8789-66bae634ef14", + "id": "3fbe5c9a-fc4c-4823-a175-fd19cb7991a3", "name": "OK", "originalRequest": { "url": { @@ -1723,6 +1711,14 @@ { "key": "Accept", "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" } ], "method": "POST", @@ -1745,7 +1741,7 @@ "value": "application/json" } ], - "body": "{\n \"placementName1\": [\n {\n \"ad_id\": \"6d2d8837-bf5a-4ba4-90d2-5546cb18d5ce\",\n \"media_url\": \"https://cdn.newtail.com.br/retail_media/ads/2023/05/03/f97a938660e56fe38a9c9ade21c27df8-1280x256-red.png\",\n \"destination_url\": null,\n \"type\": \"banner\",\n \"click_url\": \"https://newtail-media.newtail.com.br/v1/beacon/click/6d2d8837-bf5a-4ba4-90d2-5546cb18d5ce?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=banner\",\n \"impression_url\": \"https://newtail-media.newtail.com.br/v1/beacon/impression/6d2d8837-bf5a-4ba4-90d2-5546cb18d5ce?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=banner\",\n \"view_url\": \"https://newtail-media.newtail.com.br/v1/beacon/view/6d2d8837-bf5a-4ba4-90d2-5546cb18d5ce?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=banner\"\n }\n ],\n \"placementName2\": [\n {\n \"ad_id\": \"846fbf5e-6980-4a5e-a4a1-9b2a2dcbafb7\",\n \"product_sku\": \"10001236\",\n \"type\": \"product\",\n \"click_url\": \"https://newtail-media.newtail.com.br/v1/beacon/click/846fbf5e-6980-4a5e-a4a1-9b2a2dcbafb7?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=product\",\n \"impression_url\": \"https://newtail-media.newtail.com.br/v1/beacon/impression/846fbf5e-6980-4a5e-a4a1-9b2a2dcbafb7?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=product\",\n \"view_url\": \"https://newtail-media.newtail.com.br/v1/beacon/view/846fbf5e-6980-4a5e-a4a1-9b2a2dcbafb7?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=product\"\n }\n ]\n}", + "body": "{\n \"placementName1\": [\n {\n \"ad_id\": \"6d2d8837-bf5a-4ba4-90d2-5546cb18d5ce\",\n \"media_url\": \"https://cdn.newtail.com.br/retail_media/ads/2023/05/03/f97a938660e56fe38a9c9ade21c27df8-1280x256-red.png\",\n \"destination_url\": null,\n \"type\": \"banner\",\n \"click_url\": \"https://events-api.ads.vtex.com/v1/beacon/click/6d2d8837-bf5a-4ba4-90d2-5546cb18d5ce?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=banner\",\n \"impression_url\": \"https://events-api.ads.vtex.com/v1/beacon/impression/6d2d8837-bf5a-4ba4-90d2-5546cb18d5ce?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=banner\",\n \"view_url\": \"https://events-api.ads.vtex.com/v1/beacon/view/6d2d8837-bf5a-4ba4-90d2-5546cb18d5ce?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=banner\"\n }\n ],\n \"placementName2\": [\n {\n \"ad_id\": \"846fbf5e-6980-4a5e-a4a1-9b2a2dcbafb7\",\n \"product_sku\": \"10001236\",\n \"type\": \"product\",\n \"click_url\": \"https://events-api.ads.vtex.com/v1/beacon/click/846fbf5e-6980-4a5e-a4a1-9b2a2dcbafb7?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=product\",\n \"impression_url\": \"https://events-api.ads.vtex.com/v1/beacon/impression/846fbf5e-6980-4a5e-a4a1-9b2a2dcbafb7?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=product\",\n \"view_url\": \"https://events-api.ads.vtex.com/v1/beacon/view/846fbf5e-6980-4a5e-a4a1-9b2a2dcbafb7?publisher_id=0d675bf6-03f6-4b81-9617-e79dffddc3ab&ad_type=product\"\n }\n ]\n}", "cookie": [] } ], @@ -1753,7 +1749,7 @@ { "listen": "test", "script": { - "id": "4486d0bd-9335-4953-a33d-af98a4d2b148", + "id": "d30e22a1-e70e-47c8-b3b5-ba795876c331", "type": "text/javascript", "exec": [ "// Validate status 2xx \npm.test(\"[POST]::/v1/rma/:publisher_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", @@ -1770,18 +1766,6028 @@ } ], "event": [] - } - ], + }, + { + "id": "923f63dd-692b-4d37-abf4-a0ea0180e25c", + "name": "Reports", + "description": { + "content": "", + "type": "text/plain" + }, + "item": [ + { + "id": "64607aff-b733-483f-b6d4-bac4717828f4", + "name": "Export advertisers report", + "request": { + "name": "Export advertisers report", + "description": { + "content": "Export information from all advertisers associated with a publisher account. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ Only available in publisher view. For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication. Not all users will have access to all available reports.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "report", + "v2", + "advertisers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "44736df8-533c-450c-97c0-2e44f127caf5", + "name": "Success - Advertisers report data retrieved successfully", + "originalRequest": { + "url": { + "path": [ + "report", + "v2", + "advertisers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "d835a270-a40b-429c-887d-fe40e881890f", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/report/v2/advertisers - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/report/v2/advertisers - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/report/v2/advertisers - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"description\":\"List of advertiser data with metrics (when download=false).\",\"items\":{\"type\":\"object\",\"description\":\"Advertiser metrics data.\"}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/report/v2/advertisers - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "297d0ec1-c492-4f88-8998-980abe2c2ae7", + "name": "Export publishers report", + "request": { + "name": "Export publishers report", + "description": { + "content": "Export publisher information with performance metrics. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ Only available in advertiser view. For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "report", + "v2", + "publishers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "Filters results by publisher name.", + "type": "text/plain" + }, + "key": "publisher_name", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Defines the field for sorting results.", + "type": "text/plain" + }, + "key": "order_by", + "value": "name" + }, + { + "disabled": true, + "description": { + "content": "Defines the sorting direction.", + "type": "text/plain" + }, + "key": "order_direction", + "value": "asc" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "0c2fe9fd-1fa8-4ca1-a3ac-919b8cb2b84f", + "name": "Success - Publishers report data retrieved successfully", + "originalRequest": { + "url": { + "path": [ + "report", + "v2", + "publishers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "Filters results by publisher name.", + "type": "text/plain" + }, + "key": "publisher_name", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Defines the field for sorting results.", + "type": "text/plain" + }, + "key": "order_by", + "value": "name" + }, + { + "disabled": true, + "description": { + "content": "Defines the sorting direction.", + "type": "text/plain" + }, + "key": "order_direction", + "value": "asc" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "cd809f88-c20f-4ffa-9fa3-285a3f211259", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/report/v2/publishers - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/report/v2/publishers - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/report/v2/publishers - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"description\":\"List of publisher data with metrics (when download=false).\",\"items\":{\"type\":\"object\",\"description\":\"Publisher metrics data.\"}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/report/v2/publishers - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "78630d8e-a9f4-4263-aaa2-8afeebbe49ff", + "name": "Export network publishers report", + "request": { + "name": "Export network publishers report", + "description": { + "content": "Export information about publishers associated with a Network type Publisher account. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ Only publishers operating in Network format have permission to access this report. For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "report", + "network", + "publishers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "Filters results by publisher name.", + "type": "text/plain" + }, + "key": "publisher_name", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Defines the field for sorting results.", + "type": "text/plain" + }, + "key": "order_by", + "value": "income" + }, + { + "disabled": true, + "description": { + "content": "Defines the sorting direction.", + "type": "text/plain" + }, + "key": "order_direction", + "value": "asc" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "824feb3e-de8a-41a5-bfcc-555ca9586185", + "name": "Success - Network publishers report data retrieved successfully", + "originalRequest": { + "url": { + "path": [ + "report", + "network", + "publishers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "Filters results by publisher name.", + "type": "text/plain" + }, + "key": "publisher_name", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Defines the field for sorting results.", + "type": "text/plain" + }, + "key": "order_by", + "value": "income" + }, + { + "disabled": true, + "description": { + "content": "Defines the sorting direction.", + "type": "text/plain" + }, + "key": "order_direction", + "value": "asc" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "479ede37-b3db-477c-87f0-e7e30b8e9f47", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/report/network/publishers - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/report/network/publishers - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/report/network/publishers - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"description\":\"List of network publisher data with metrics (when download=false).\",\"items\":{\"type\":\"object\",\"description\":\"Network publisher metrics data.\"}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/report/network/publishers - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "bdaf69eb-eaf0-4dc6-9994-b1fa504f1961", + "name": "Export campaigns report", + "request": { + "name": "Export campaigns report", + "description": { + "content": "Export all available campaigns with performance metrics, applying filters as needed. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "campaign", + "v2" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "Filters by campaign status.", + "type": "text/plain" + }, + "key": "status", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters campaigns by advertiser ID.", + "type": "text/plain" + }, + "key": "advertiser_id", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters by ad type.", + "type": "text/plain" + }, + "key": "ad_type", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Searches campaigns by name.", + "type": "text/plain" + }, + "key": "name", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Defines the field for sorting results.", + "type": "text/plain" + }, + "key": "order_by", + "value": "ctr" + }, + { + "disabled": true, + "description": { + "content": "Defines the sorting direction.", + "type": "text/plain" + }, + "key": "order_direction", + "value": "asc" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "4355489d-467a-43fe-bc48-7dcb7737208a", + "name": "Success - Campaigns report data retrieved successfully", + "originalRequest": { + "url": { + "path": [ + "campaign", + "v2" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "Filters by campaign status.", + "type": "text/plain" + }, + "key": "status", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters campaigns by advertiser ID.", + "type": "text/plain" + }, + "key": "advertiser_id", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters by ad type.", + "type": "text/plain" + }, + "key": "ad_type", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Searches campaigns by name.", + "type": "text/plain" + }, + "key": "name", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Defines the field for sorting results.", + "type": "text/plain" + }, + "key": "order_by", + "value": "ctr" + }, + { + "disabled": true, + "description": { + "content": "Defines the sorting direction.", + "type": "text/plain" + }, + "key": "order_direction", + "value": "asc" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "db71f731-26bd-47af-8a22-9e1a93ddfa3a", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/campaign/v2 - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/campaign/v2 - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/campaign/v2 - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"description\":\"List of campaign data with metrics (when download=false).\",\"items\":{\"type\":\"object\",\"description\":\"Campaign metrics data.\"}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/campaign/v2 - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "7c4a70dc-5101-46d1-a90b-5b0c497b38fb", + "name": "Export ads report", + "request": { + "name": "Export ads report", + "description": { + "content": "Export all available ads with performance metrics, applying filters as needed. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "ad", + "results", + "v2" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by campaign name.", + "type": "text/plain" + }, + "key": "campaign_name", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by campaign ID.", + "type": "text/plain" + }, + "key": "campaign_id", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by advertiser ID.", + "type": "text/plain" + }, + "key": "advertiser_id", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by product SKU.", + "type": "text/plain" + }, + "key": "product_sku", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by status.", + "type": "text/plain" + }, + "key": "ad_status", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters by ad type.", + "type": "text/plain" + }, + "key": "ad_type", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters by targeting type.", + "type": "text/plain" + }, + "key": "targeting_type", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "If true, includes paused ads.", + "type": "text/plain" + }, + "key": "show_inactive", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Defines the field for sorting results.", + "type": "text/plain" + }, + "key": "order_by", + "value": "ad_type" + }, + { + "disabled": true, + "description": { + "content": "Defines the sorting direction.", + "type": "text/plain" + }, + "key": "order_direction", + "value": "asc" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "97d7be54-f5c9-4447-8178-97a960cba9ec", + "name": "Success - Ads report data retrieved successfully", + "originalRequest": { + "url": { + "path": [ + "ad", + "results", + "v2" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Metrics start date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2025-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) Metrics end date in YYYY-MM-DD format.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2025-01-01" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by campaign name.", + "type": "text/plain" + }, + "key": "campaign_name", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by campaign ID.", + "type": "text/plain" + }, + "key": "campaign_id", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by advertiser ID.", + "type": "text/plain" + }, + "key": "advertiser_id", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by product SKU.", + "type": "text/plain" + }, + "key": "product_sku", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters ads by status.", + "type": "text/plain" + }, + "key": "ad_status", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters by ad type.", + "type": "text/plain" + }, + "key": "ad_type", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "Filters by targeting type.", + "type": "text/plain" + }, + "key": "targeting_type", + "value": "eiusmod" + }, + { + "disabled": true, + "description": { + "content": "If true, includes paused ads.", + "type": "text/plain" + }, + "key": "show_inactive", + "value": "true" + }, + { + "disabled": true, + "description": { + "content": "If true, includes detailed account information in the result.", + "type": "text/plain" + }, + "key": "account_info", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Page number of results.", + "type": "text/plain" + }, + "key": "page", + "value": "1" + }, + { + "disabled": true, + "description": { + "content": "Number of items per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "100" + }, + { + "disabled": true, + "description": { + "content": "If true, returns the total number of available records.", + "type": "text/plain" + }, + "key": "count", + "value": "false" + }, + { + "disabled": true, + "description": { + "content": "Defines the field for sorting results.", + "type": "text/plain" + }, + "key": "order_by", + "value": "ad_type" + }, + { + "disabled": true, + "description": { + "content": "Defines the sorting direction.", + "type": "text/plain" + }, + "key": "order_direction", + "value": "asc" + }, + { + "disabled": true, + "description": { + "content": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "type": "text/plain" + }, + "key": "download", + "value": "false" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "a60608cd-76b4-436a-a617-b1c5c68eb322", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/ad/results/v2 - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/ad/results/v2 - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/ad/results/v2 - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"description\":\"List of ad data with metrics (when download=false).\",\"items\":{\"type\":\"object\",\"description\":\"Ad metrics data.\"}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/ad/results/v2 - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "ec6095f7-2c5e-47f0-a839-d7d882a34e59", + "name": "Marketplace integration - Catalog", + "description": { + "content": "", + "type": "text/plain" + }, + "item": [ + { + "id": "4daefbd3-b9ec-4b70-acd0-913eed044f41", + "name": "Search catalog products", + "request": { + "name": "Search catalog products", + "description": { + "content": "Query the retailer's catalog to search for products with various filters. This API enables product synchronization between marketplaces and VTEX Ads.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Partial search by product name.", + "type": "text/plain" + }, + "key": "name", + "value": "Red Sneakers" + }, + { + "disabled": true, + "description": { + "content": "Filter by a list of SKUs (comma-separated).", + "type": "text/plain" + }, + "key": "skus", + "value": "sku1,sku2,sku3" + }, + { + "disabled": true, + "description": { + "content": "Filter by a list of EANs (comma-separated).", + "type": "text/plain" + }, + "key": "eans", + "value": "1234567890123,9876543210987" + }, + { + "disabled": true, + "description": { + "content": "Number of items that should be returned.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + }, + { + "disabled": true, + "description": { + "content": "Current page number. Starts at 0 (zero).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "basic", + "basic": [ + { + "type": "any", + "value": "{{basicAuthUsername}}", + "key": "username" + }, + { + "type": "any", + "value": "{{basicAuthPassword}}", + "key": "password" + } + ] + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "4c4ce345-f1e5-4e3f-a19e-85400fd7dec5", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "search" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Partial search by product name.", + "type": "text/plain" + }, + "key": "name", + "value": "Red Sneakers" + }, + { + "disabled": true, + "description": { + "content": "Filter by a list of SKUs (comma-separated).", + "type": "text/plain" + }, + "key": "skus", + "value": "sku1,sku2,sku3" + }, + { + "disabled": true, + "description": { + "content": "Filter by a list of EANs (comma-separated).", + "type": "text/plain" + }, + "key": "eans", + "value": "1234567890123,9876543210987" + }, + { + "disabled": true, + "description": { + "content": "Number of items that should be returned.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + }, + { + "disabled": true, + "description": { + "content": "Current page number. Starts at 0 (zero).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: basic", + "type": "text/plain" + }, + "key": "Authorization", + "value": "Basic " + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"product_sku\": \"sku123\",\n \"name\": \"Red Sneakers\",\n \"image_url\": \"https://example.com/image.jpg\",\n \"categories\": \"Sports/Shoes\",\n \"brand\": \"Nike\",\n \"gtins\": [\n \"1234567890123\"\n ],\n \"urls\": [\n {\n \"site\": \"example-store\",\n \"url\": \"https://example.com/product/red-sneakers\"\n }\n ],\n \"stocks\": [\n {\n \"site\": \"example-store\",\n \"seller_id\": \"seller123\",\n \"quantity\": 10\n }\n ],\n \"metadata\": {\n \"color\": \"red\",\n \"size\": \"42\"\n }\n }\n]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "fbd96d50-498a-4618-99db-1c2b314f61b5", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/search - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/search - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/search - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"product_sku\",\"name\",\"categories\",\"brand\",\"urls\",\"stocks\"],\"properties\":{\"product_sku\":{\"type\":\"string\",\"description\":\"Unique identifier of the parent product.\"},\"name\":{\"type\":\"string\",\"description\":\"Product title.\"},\"image_url\":{\"type\":\"string\",\"description\":\"Public product image URL, can be just a thumbnail.\"},\"categories\":{\"type\":\"string\",\"description\":\"Product categories.\"},\"brand\":{\"type\":\"string\",\"description\":\"Product brand name.\"},\"gtins\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"List of EANs.\"},\"urls\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"url\"],\"properties\":{\"site\":{\"type\":\"string\",\"description\":\"Site brand name.\"},\"url\":{\"type\":\"string\",\"description\":\"Product URL.\"}}},\"description\":\"Product URL information.\"},\"stocks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"quantity\"],\"properties\":{\"site\":{\"type\":\"string\",\"description\":\"Site brand name.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller ID identifier.\"},\"quantity\":{\"type\":\"number\",\"format\":\"float\",\"description\":\"Stock quantity.\"}}},\"description\":\"Product stock information.\"},\"metadata\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"},\"description\":\"Information returned during ad queries without modification.\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/search - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "ce3a9205-6dd6-42ef-9064-0aca85d98b6b", + "name": "Marketplace Integration - Advertiser management", + "description": { + "content": "", + "type": "text/plain" + }, + "item": [ + { + "id": "230f8053-64b5-4b3a-8be5-38cf97ab598e", + "name": "Search advertisers", + "request": { + "name": "Search advertisers", + "description": { + "content": "Search for advertisers with optional filters.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "advertisers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + }, + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Filter by advertiser name (partial match).", + "type": "text/plain" + }, + "key": "name", + "value": "Nike Store" + }, + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "362f1dc8-ac51-43ed-b29f-80944ff2c3f8", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "advertisers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + }, + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Filter by advertiser name (partial match).", + "type": "text/plain" + }, + "key": "name", + "value": "Nike Store" + }, + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"seller_id\": \"seller123\",\n \"name\": \"Nike Store\",\n \"cnpj\": \"12345678000190\"\n },\n {\n \"seller_id\": \"seller123\",\n \"name\": \"Nike Store\",\n \"cnpj\": \"12345678000190\"\n }\n]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "7ed79cd7-204c-4e3a-9bac-6f0cfcb05af6", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/advertisers - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/advertisers - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/advertisers - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"seller_id\":{\"type\":\"string\",\"description\":\"Unique seller identifier.\"},\"name\":{\"type\":\"string\",\"description\":\"Advertiser name.\"},\"cnpj\":{\"type\":\"string\",\"description\":\"Tax ID number.\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/advertisers - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "185d0730-9195-426a-8b3d-12d43c1ef8bd", + "name": "Create advertiser", + "request": { + "name": "Create advertiser", + "description": { + "content": "Create a new advertiser entity.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "advertisers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"seller123\",\n \"name\": \"Nike Store\",\n \"cnpj\": \"12345678000190\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "52815c71-3107-43d7-a160-4efdee8775ad", + "name": "Created", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "advertisers" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"seller123\",\n \"name\": \"Nike Store\",\n \"cnpj\": \"12345678000190\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Created", + "code": 201, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"seller_id\": \"seller123\",\n \"name\": \"Nike Store\",\n \"cnpj\": \"12345678000190\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "59f92223-a4df-4b19-a093-9eb2b344fa8a", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[POST]::/api/v1/advertisers - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/v1/advertisers - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/v1/advertisers - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"seller_id\":{\"type\":\"string\",\"description\":\"Unique seller identifier.\"},\"name\":{\"type\":\"string\",\"description\":\"Advertiser name.\"},\"cnpj\":{\"type\":\"string\",\"description\":\"Tax ID number.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/v1/advertisers - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "35c41705-1fef-4ad9-b24b-e0130c6c81e8", + "name": "Get advertiser by seller ID", + "request": { + "name": "Get advertiser by seller ID", + "description": { + "content": "Retrieve an advertiser by their seller ID.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "advertisers", + ":seller_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Unique identifier of the seller.", + "type": "text/plain" + }, + "type": "any", + "value": "seller123", + "key": "seller_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "5bc6c9a4-40c6-41b7-a9f6-f9c595d113ef", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "advertisers", + ":seller_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"seller_id\": \"seller123\",\n \"name\": \"Nike Store\",\n \"cnpj\": \"12345678000190\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "412fc9fa-4fe2-43d8-8080-33dd3f36fe85", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/advertisers/:seller_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/advertisers/:seller_id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/advertisers/:seller_id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"seller_id\":{\"type\":\"string\",\"description\":\"Unique seller identifier.\"},\"name\":{\"type\":\"string\",\"description\":\"Advertiser name.\"},\"cnpj\":{\"type\":\"string\",\"description\":\"Tax ID number.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/advertisers/:seller_id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "366c3d35-4fdc-4077-9209-b68d0826e8b5", + "name": "Update advertiser by seller ID", + "request": { + "name": "Update advertiser by seller ID", + "description": { + "content": "Update an advertiser's information by their seller ID.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "advertisers", + ":seller_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Unique identifier of the seller.", + "type": "text/plain" + }, + "type": "any", + "value": "seller123", + "key": "seller_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Nike Store Updated\",\n \"cnpj\": \"12345678000190\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "f0378de5-593d-4257-b32d-daf6b88fb022", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "advertisers", + ":seller_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Nike Store Updated\",\n \"cnpj\": \"12345678000190\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"seller_id\": \"seller123\",\n \"name\": \"Nike Store Updated\",\n \"cnpj\": \"12345678000190\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "237eb983-22d7-457c-9773-41e79a83abef", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[PATCH]::/api/v1/advertisers/:seller_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/v1/advertisers/:seller_id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/v1/advertisers/:seller_id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"seller_id\":{\"type\":\"string\",\"description\":\"Unique seller identifier.\"},\"name\":{\"type\":\"string\",\"description\":\"Advertiser name.\"},\"cnpj\":{\"type\":\"string\",\"description\":\"Tax ID number.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/v1/advertisers/:seller_id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "4fb2617b-723e-4d08-a3d2-5a8414e3d347", + "name": "Marketplace Integration - Campaign management", + "description": { + "content": "", + "type": "text/plain" + }, + "item": [ + { + "id": "f6b4e570-a2d0-41b7-81e3-280c999963ef", + "name": "List campaigns", + "request": { + "name": "List campaigns", + "description": { + "content": "List all campaigns with optional filters.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "campaigns" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + }, + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Filter by campaign status.", + "type": "text/plain" + }, + "key": "status", + "value": "active" + }, + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "23bfa837-0e74-4d2b-819f-66c0748a9061", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "campaigns" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + }, + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Filter by campaign status.", + "type": "text/plain" + }, + "key": "status", + "value": "active" + }, + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"campaign_id\": \"camp-123456\",\n \"name\": \"Summer Sale 2024\",\n \"seller_id\": \"seller123\",\n \"status\": \"active\",\n \"budget\": 10000,\n \"start_date\": \"2024-01-01T00:00:00Z\",\n \"end_date\": \"2024-12-31T23:59:59Z\"\n },\n {\n \"campaign_id\": \"camp-123456\",\n \"name\": \"Summer Sale 2024\",\n \"seller_id\": \"seller123\",\n \"status\": \"active\",\n \"budget\": 10000,\n \"start_date\": \"2024-01-01T00:00:00Z\",\n \"end_date\": \"2024-12-31T23:59:59Z\"\n }\n]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "6164f1d7-dc25-4731-82d6-81aa98cfa0de", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/campaigns - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/campaigns - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/campaigns - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"campaign_id\":{\"type\":\"string\",\"description\":\"Unique campaign identifier.\"},\"name\":{\"type\":\"string\",\"description\":\"Campaign name.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"status\":{\"type\":\"string\",\"enum\":[\"active\",\"paused\",\"ended\"],\"description\":\"Campaign status.\"},\"budget\":{\"type\":\"number\",\"description\":\"Campaign budget.\"},\"start_date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Campaign start date.\"},\"end_date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Campaign end date.\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/campaigns - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "a01595e9-5812-4a7a-846d-24cf3559a6b0", + "name": "Create campaign", + "request": { + "name": "Create campaign", + "description": { + "content": "Create a new advertising campaign.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "campaigns" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Summer Sale 2024\",\n \"seller_id\": \"seller123\",\n \"budget\": 10000,\n \"start_date\": \"2024-01-01T00:00:00Z\",\n \"end_date\": \"2024-12-31T23:59:59Z\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "b2ef77a9-c371-46c2-b56c-993879af5265", + "name": "Created", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "campaigns" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Summer Sale 2024\",\n \"seller_id\": \"seller123\",\n \"budget\": 10000,\n \"start_date\": \"2024-01-01T00:00:00Z\",\n \"end_date\": \"2024-12-31T23:59:59Z\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Created", + "code": 201, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"campaign_id\": \"camp-123456\",\n \"name\": \"Summer Sale 2024\",\n \"seller_id\": \"seller123\",\n \"status\": \"active\",\n \"budget\": 10000,\n \"start_date\": \"2024-01-01T00:00:00Z\",\n \"end_date\": \"2024-12-31T23:59:59Z\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "3aadc2ee-0e64-4e1f-a8b3-cf45b7999cba", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[POST]::/api/v1/campaigns - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/v1/campaigns - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/v1/campaigns - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"campaign_id\":{\"type\":\"string\",\"description\":\"Unique campaign identifier.\"},\"name\":{\"type\":\"string\",\"description\":\"Campaign name.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"status\":{\"type\":\"string\",\"enum\":[\"active\",\"paused\",\"ended\"],\"description\":\"Campaign status.\"},\"budget\":{\"type\":\"number\",\"description\":\"Campaign budget.\"},\"start_date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Campaign start date.\"},\"end_date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Campaign end date.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/v1/campaigns - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "8d3137e5-2414-4c30-9c3c-831343bcf4a6", + "name": "Get campaign by ID", + "request": { + "name": "Get campaign by ID", + "description": { + "content": "Retrieve a campaign by its ID.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "campaigns", + ":campaign_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Unique identifier of the campaign.", + "type": "text/plain" + }, + "type": "any", + "value": "camp-123456", + "key": "campaign_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "b59e85ea-a7f3-43b8-8ee2-a43c366e09b9", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "campaigns", + ":campaign_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"campaign_id\": \"camp-123456\",\n \"name\": \"Summer Sale 2024\",\n \"seller_id\": \"seller123\",\n \"status\": \"active\",\n \"budget\": 10000,\n \"start_date\": \"2024-01-01T00:00:00Z\",\n \"end_date\": \"2024-12-31T23:59:59Z\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "48e01e71-42b7-49d0-840e-19b524200997", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/campaigns/:campaign_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/campaigns/:campaign_id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/campaigns/:campaign_id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"campaign_id\":{\"type\":\"string\",\"description\":\"Unique campaign identifier.\"},\"name\":{\"type\":\"string\",\"description\":\"Campaign name.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"status\":{\"type\":\"string\",\"enum\":[\"active\",\"paused\",\"ended\"],\"description\":\"Campaign status.\"},\"budget\":{\"type\":\"number\",\"description\":\"Campaign budget.\"},\"start_date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Campaign start date.\"},\"end_date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Campaign end date.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/campaigns/:campaign_id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "a686488c-2ef8-4354-9824-f5d45c3537d4", + "name": "Update campaign by ID", + "request": { + "name": "Update campaign by ID", + "description": { + "content": "Update a campaign's information by its ID.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "campaigns", + ":campaign_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Unique identifier of the campaign.", + "type": "text/plain" + }, + "type": "any", + "value": "camp-123456", + "key": "campaign_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Summer Sale 2024 Updated\",\n \"status\": \"paused\",\n \"budget\": 15000,\n \"end_date\": \"2024-12-31T23:59:59Z\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "743d0ed8-d299-4b4e-acfb-9bacae9806a9", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "campaigns", + ":campaign_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "PATCH", + "body": { + "mode": "raw", + "raw": "{\n \"name\": \"Summer Sale 2024 Updated\",\n \"status\": \"paused\",\n \"budget\": 15000,\n \"end_date\": \"2024-12-31T23:59:59Z\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"campaign_id\": \"camp-123456\",\n \"name\": \"Summer Sale 2024 Updated\",\n \"seller_id\": \"seller123\",\n \"status\": \"paused\",\n \"budget\": 15000,\n \"start_date\": \"2024-01-01T00:00:00Z\",\n \"end_date\": \"2024-12-31T23:59:59Z\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "f693fe49-8e34-42d6-a2f6-5d14f6aadda8", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[PATCH]::/api/v1/campaigns/:campaign_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[PATCH]::/api/v1/campaigns/:campaign_id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[PATCH]::/api/v1/campaigns/:campaign_id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"campaign_id\":{\"type\":\"string\",\"description\":\"Unique campaign identifier.\"},\"name\":{\"type\":\"string\",\"description\":\"Campaign name.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"status\":{\"type\":\"string\",\"enum\":[\"active\",\"paused\",\"ended\"],\"description\":\"Campaign status.\"},\"budget\":{\"type\":\"number\",\"description\":\"Campaign budget.\"},\"start_date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Campaign start date.\"},\"end_date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Campaign end date.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[PATCH]::/api/v1/campaigns/:campaign_id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "51516139-4587-4918-b80d-f6203b114479", + "name": "Marketplace Integration - Metrics", + "description": { + "content": "", + "type": "text/plain" + }, + "item": [ + { + "id": "c0299c97-6a97-4539-859d-5f08c878550d", + "name": "Get macro metrics", + "request": { + "name": "Get macro metrics", + "description": { + "content": "Retrieve macro-level performance metrics across campaigns.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "metrics", + "macro" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Start date for metrics query.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2024-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) End date for metrics query.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2024-12-31" + }, + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Filter by campaign identifier.", + "type": "text/plain" + }, + "key": "campaign_id", + "value": "camp-123456" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "ebf0e6d1-a961-4099-b44d-b766d5669868", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "metrics", + "macro" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Start date for metrics query.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2024-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) End date for metrics query.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2024-12-31" + }, + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Filter by campaign identifier.", + "type": "text/plain" + }, + "key": "campaign_id", + "value": "camp-123456" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"total_impressions\": 1000000,\n \"total_clicks\": 50000,\n \"total_spend\": 25000.5,\n \"total_conversions\": 2500,\n \"ctr\": 0.05,\n \"cpc\": 0.5,\n \"conversion_rate\": 0.05\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "200fb3b7-f588-4df8-8d2e-3b2395789abc", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/metrics/macro - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/metrics/macro - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/metrics/macro - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"total_impressions\":{\"type\":\"integer\",\"description\":\"Total number of ad impressions.\"},\"total_clicks\":{\"type\":\"integer\",\"description\":\"Total number of ad clicks.\"},\"total_spend\":{\"type\":\"number\",\"description\":\"Total advertising spend.\"},\"total_conversions\":{\"type\":\"integer\",\"description\":\"Total number of conversions.\"},\"ctr\":{\"type\":\"number\",\"description\":\"Click-through rate.\"},\"cpc\":{\"type\":\"number\",\"description\":\"Cost per click.\"},\"conversion_rate\":{\"type\":\"number\",\"description\":\"Conversion rate.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/metrics/macro - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "857fdda1-3d72-4ce7-903b-5154272388a1", + "name": "Get historical metrics", + "request": { + "name": "Get historical metrics", + "description": { + "content": "Retrieve historical performance metrics with daily granularity.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "metrics", + "historical" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Start date for metrics query.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2024-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) End date for metrics query.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2024-12-31" + }, + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Filter by campaign identifier.", + "type": "text/plain" + }, + "key": "campaign_id", + "value": "camp-123456" + }, + { + "disabled": true, + "description": { + "content": "Time granularity for the data.", + "type": "text/plain" + }, + "key": "granularity", + "value": "daily" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "1135124f-c46c-4540-b37b-9330485c83c6", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "metrics", + "historical" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Start date for metrics query.", + "type": "text/plain" + }, + "key": "start_date", + "value": "2024-01-01" + }, + { + "disabled": false, + "description": { + "content": "(Required) End date for metrics query.", + "type": "text/plain" + }, + "key": "end_date", + "value": "2024-12-31" + }, + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Filter by campaign identifier.", + "type": "text/plain" + }, + "key": "campaign_id", + "value": "camp-123456" + }, + { + "disabled": true, + "description": { + "content": "Time granularity for the data.", + "type": "text/plain" + }, + "key": "granularity", + "value": "daily" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"date\": \"2024-01-01\",\n \"impressions\": 10000,\n \"clicks\": 500,\n \"spend\": 250.5,\n \"conversions\": 25\n },\n {\n \"date\": \"2024-01-01\",\n \"impressions\": 10000,\n \"clicks\": 500,\n \"spend\": 250.5,\n \"conversions\": 25\n }\n]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "e4e8f9d6-7f65-409d-bbbc-5bf1d01a858b", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/metrics/historical - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/metrics/historical - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/metrics/historical - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"date\":{\"type\":\"string\",\"format\":\"date\",\"description\":\"Date of the metrics.\"},\"impressions\":{\"type\":\"integer\",\"description\":\"Number of ad impressions.\"},\"clicks\":{\"type\":\"integer\",\"description\":\"Number of ad clicks.\"},\"spend\":{\"type\":\"number\",\"description\":\"Advertising spend.\"},\"conversions\":{\"type\":\"integer\",\"description\":\"Number of conversions.\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/metrics/historical - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "f70d0429-3f1a-4329-90de-1bb100bbd325", + "name": "Marketplace Integration - Credits management", + "description": { + "content": "", + "type": "text/plain" + }, + "item": [ + { + "id": "e67fd97b-4572-4279-92b2-7fa5a3cc0025", + "name": "List advertiser advertising credit accounts", + "request": { + "name": "List advertiser advertising credit accounts", + "description": { + "content": "List advertising credit accounts for advertisers with optional filters. These accounts hold credits used for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "checking_accounts" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "cdd7021d-eb69-4401-9b96-65f54031bb53", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "checking_accounts" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"seller_id\": \"seller123\",\n \"seller_name\": \"Nike Store\",\n \"balance\": \"1111.00\",\n \"currency\": \"USD\",\n \"created_at\": \"2024-01-01T00:00:00Z\",\n \"updated_at\": \"2024-01-15T10:30:00Z\"\n },\n {\n \"seller_id\": \"seller123\",\n \"seller_name\": \"Nike Store\",\n \"balance\": \"1111.00\",\n \"currency\": \"USD\",\n \"created_at\": \"2024-01-01T00:00:00Z\",\n \"updated_at\": \"2024-01-15T10:30:00Z\"\n }\n]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "87faceb5-2cf3-4e3c-ab56-d4f60d1228b1", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/checking_accounts - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/checking_accounts - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/checking_accounts - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"seller_name\":{\"type\":\"string\",\"description\":\"Seller name.\"},\"balance\":{\"type\":\"string\",\"description\":\"Available balance amount.\"},\"currency\":{\"type\":\"string\",\"description\":\"Currency code.\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Account creation date.\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Last update date.\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/checking_accounts - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "79c5fd4d-fec6-4ff8-b040-3cabac0313c1", + "name": "List advertising credits from an account", + "request": { + "name": "List advertising credits from an account", + "description": { + "content": "List advertising credits from a specific seller account. These credits are used for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "checking_accounts", + ":seller_id", + "transactions" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + } + ], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Seller identifier.", + "type": "text/plain" + }, + "type": "any", + "value": "seller123", + "key": "seller_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "a13ed315-687c-457b-a702-693c24a7da92", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "checking_accounts", + ":seller_id", + "transactions" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"transaction_id\": \"txn-123456\",\n \"type\": \"credit\",\n \"amount\": 150,\n \"date\": \"2024-01-15T10:30:00Z\",\n \"description\": \"Credit addition to account\"\n },\n {\n \"transaction_id\": \"txn-123456\",\n \"type\": \"credit\",\n \"amount\": 150,\n \"date\": \"2024-01-15T10:30:00Z\",\n \"description\": \"Credit addition to account\"\n }\n]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "457619d9-201c-492c-b13b-3b578b8f186c", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/checking_accounts/:seller_id/transactions - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/checking_accounts/:seller_id/transactions - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/checking_accounts/:seller_id/transactions - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"transaction_id\":{\"type\":\"string\",\"description\":\"Transaction identifier.\"},\"type\":{\"type\":\"string\",\"enum\":[\"credit\",\"debit\",\"charge\",\"refund\"],\"description\":\"Transaction type.\"},\"amount\":{\"type\":\"number\",\"description\":\"Transaction amount.\"},\"date\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Transaction date.\"},\"description\":{\"type\":\"string\",\"description\":\"Transaction description.\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/checking_accounts/:seller_id/transactions - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "b763a23d-d9b3-4561-9f1f-4afe8767c468", + "name": "Add advertising credits to account", + "request": { + "name": "Add advertising credits to account", + "description": { + "content": "Add advertising credits to an advertiser account. These credits will be available for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "checking_accounts", + ":seller_id", + "transactions" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Seller identifier.", + "type": "text/plain" + }, + "type": "any", + "value": "seller123", + "key": "seller_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"seller123\",\n \"amount\": 1000,\n \"description\": \"Monthly credit allocation\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "98c310d3-ad1f-4e5b-a20f-0c7b8121c7c2", + "name": "Created", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "checking_accounts", + ":seller_id", + "transactions" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"seller123\",\n \"amount\": 1000,\n \"description\": \"Monthly credit allocation\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Created", + "code": 201, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"transaction_id\": \"txn-123456\",\n \"seller_id\": \"seller123\",\n \"amount\": 1000,\n \"new_balance\": 6000\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "5f766606-abd7-45fd-a658-e30eaed08777", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[POST]::/api/v1/checking_accounts/:seller_id/transactions - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/v1/checking_accounts/:seller_id/transactions - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/v1/checking_accounts/:seller_id/transactions - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"transaction_id\":{\"type\":\"string\",\"description\":\"Transaction identifier.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"amount\":{\"type\":\"number\",\"description\":\"Credited amount.\"},\"new_balance\":{\"type\":\"number\",\"description\":\"New account balance after credit.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/v1/checking_accounts/:seller_id/transactions - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "02ccc2ce-85be-40b0-beea-edd02559b27a", + "name": "Check advertising credits balance", + "request": { + "name": "Check advertising credits balance", + "description": { + "content": "Check the available advertising credits balance for a seller account. These credits are used for advertising campaigns and ad spending.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "checking_account" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Publisher identifier (optional, used only when an entity manages multiple publishers).", + "type": "text/plain" + }, + "key": "publisher_id", + "value": "pub-456" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "basic", + "basic": [ + { + "type": "any", + "value": "{{basicAuthUsername}}", + "key": "username" + }, + { + "type": "any", + "value": "{{basicAuthPassword}}", + "key": "password" + } + ] + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "139b006a-ed19-43e1-8463-dc19a82016ab", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "checking_account" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Publisher identifier (optional, used only when an entity manages multiple publishers).", + "type": "text/plain" + }, + "key": "publisher_id", + "value": "pub-456" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: basic", + "type": "text/plain" + }, + "key": "Authorization", + "value": "Basic " + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"total\": \"1111.00\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "00bd5819-19f9-48b1-b109-3d13f4ec61f5", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/checking_account - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/checking_account - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/checking_account - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"string\",\"description\":\"Available balance amount.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/checking_account - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "5fd6d012-5358-405f-b193-6cc37b825187", + "name": "Request advertising credits transfer", + "request": { + "name": "Request advertising credits transfer", + "description": { + "content": "Request a transfer of a specified amount of advertising credits. These credits are used for advertising campaigns and ad spending.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "checking_account", + "transfer" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"amount\": \"10.00\",\n \"seller_id\": \"SELLER_ID\",\n \"publisher_id\": \"PUBLISHER_ID\",\n \"transfer_identity_id\": \"uuid\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + }, + "auth": { + "type": "basic", + "basic": [ + { + "type": "any", + "value": "{{basicAuthUsername}}", + "key": "username" + }, + { + "type": "any", + "value": "{{basicAuthPassword}}", + "key": "password" + } + ] + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "a2f765b6-762f-48ae-8cd5-7f7ff622b3e4", + "name": "Created - Synchronous success", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "checking_account", + "transfer" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: basic", + "type": "text/plain" + }, + "key": "Authorization", + "value": "Basic " + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"amount\": \"10.00\",\n \"seller_id\": \"SELLER_ID\",\n \"publisher_id\": \"PUBLISHER_ID\",\n \"transfer_identity_id\": \"uuid\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Created", + "code": 201, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"transaction_id\": \"TRANSACTION_ID\",\n \"status\": \"success\"\n}", + "cookie": [] + }, + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "4208606f-2bc5-4992-ae8d-0b84e6a8db83", + "name": "Accepted - Asynchronous processing", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "checking_account", + "transfer" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: basic", + "type": "text/plain" + }, + "key": "Authorization", + "value": "Basic " + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"amount\": \"10.00\",\n \"seller_id\": \"SELLER_ID\",\n \"publisher_id\": \"PUBLISHER_ID\",\n \"transfer_identity_id\": \"uuid\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Accepted", + "code": 202, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"transaction_id\": \"TRANSACTION_ID\",\n \"status\": \"processing\"\n}", + "cookie": [] + }, + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "cdbf0248-e4a8-4263-8983-696b5f971b90", + "name": "Bad Request - Synchronous failure", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "checking_account", + "transfer" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: basic", + "type": "text/plain" + }, + "key": "Authorization", + "value": "Basic " + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"amount\": \"10.00\",\n \"seller_id\": \"SELLER_ID\",\n \"publisher_id\": \"PUBLISHER_ID\",\n \"transfer_identity_id\": \"uuid\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"transaction_id\": \"TRANSACTION_ID\",\n \"status\": \"failure\",\n \"message\": \"Insufficient balance\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "d884f45c-d5ae-4e27-8456-ce71a5181907", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[POST]::/api/v1/checking_account/transfer - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/v1/checking_account/transfer - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/v1/checking_account/transfer - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"transaction_id\":{\"type\":\"string\",\"description\":\"Transaction identifier.\"},\"status\":{\"type\":\"string\",\"enum\":[\"success\"],\"description\":\"Transfer status.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/v1/checking_account/transfer - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "e7682adc-567d-4f0a-aea2-e0d92233147d", + "name": "Transfer status webhook", + "request": { + "name": "Transfer status webhook", + "description": { + "content": "Webhook to notify VTEX Ads about the final status of a transfer. The marketplace must consume this webhook to update transfer status.\r\n\r\n## Authentication\r\n\r\nThis endpoint requires `x-api-key` and `x-secret-key` headers for authentication.\r\n\r\n## Retry Logic\r\n\r\nIn case of webhook call failure, the marketplace should retry the request.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "webhook", + "marketplace", + "transfers", + ":publisher_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Publisher identifier.", + "type": "text/plain" + }, + "type": "any", + "value": "PUBLISHER_ID", + "key": "publisher_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) API key for authentication.", + "type": "text/plain" + }, + "key": "x-api-key", + "value": "your-api-key" + }, + { + "disabled": false, + "description": { + "content": "(Required) Secret key for authentication.", + "type": "text/plain" + }, + "key": "x-secret-key", + "value": "your-secret-key" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"transaction_id\": \"TRANSACTION_ID\",\n \"status\": \"success\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "text" + }, + "id": "04a9b31f-2efd-4e94-99d9-459514ef9bf4", + "name": "No Content - Webhook successfully processed", + "originalRequest": { + "url": { + "path": [ + "webhook", + "marketplace", + "transfers", + ":publisher_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) API key for authentication.", + "type": "text/plain" + }, + "key": "x-api-key", + "value": "your-api-key" + }, + { + "disabled": false, + "description": { + "content": "(Required) Secret key for authentication.", + "type": "text/plain" + }, + "key": "x-secret-key", + "value": "your-secret-key" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"transaction_id\": \"TRANSACTION_ID\",\n \"status\": \"success\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "No Content", + "code": 204, + "header": [], + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "f49dbf9b-a2b5-4b0a-86d6-e0fb36380cf6", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[POST]::/webhook/marketplace/transfers/:publisher_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response has empty Body \npm.test(\"[POST]::/webhook/marketplace/transfers/:publisher_id - Response has empty Body\", function () {\n pm.response.to.not.be.withBody;\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "7e5773cf-d2ab-4752-a350-9d845be5a8b6", + "name": "Marketplace Integration - Credits payments", + "description": { + "content": "", + "type": "text/plain" + }, + "item": [ + { + "id": "972ec48a-5a12-4c48-836c-f59d65ed10a8", + "name": "List advertising credits payments", + "request": { + "name": "List advertising credits payments", + "description": { + "content": "List payments for advertising credits with optional filters. These payments add credits to advertiser accounts for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "payments" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "68539135-44e6-4015-af33-3b845fc6df80", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "payments" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": true, + "description": { + "content": "Filter by seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": true, + "description": { + "content": "Page number (starts at 0).", + "type": "text/plain" + }, + "key": "page", + "value": "0" + }, + { + "disabled": true, + "description": { + "content": "Number of items to return per page.", + "type": "text/plain" + }, + "key": "quantity", + "value": "20" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "[\n {\n \"payment_id\": \"pay-123456\",\n \"seller_id\": \"seller123\",\n \"payment_type\": \"credit_card\",\n \"amount\": 1000,\n \"status\": \"completed\",\n \"created_at\": \"2024-01-15T10:30:00Z\",\n \"updated_at\": \"2024-01-15T10:35:00Z\"\n },\n {\n \"payment_id\": \"pay-123456\",\n \"seller_id\": \"seller123\",\n \"payment_type\": \"credit_card\",\n \"amount\": 1000,\n \"status\": \"completed\",\n \"created_at\": \"2024-01-15T10:30:00Z\",\n \"updated_at\": \"2024-01-15T10:35:00Z\"\n }\n]", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "9e797a50-a60d-41df-b32a-611edd77ea14", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/payments - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/payments - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/payments - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"payment_id\":{\"type\":\"string\",\"description\":\"Payment identifier.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"payment_type\":{\"type\":\"string\",\"description\":\"Payment type.\"},\"amount\":{\"type\":\"number\",\"description\":\"Payment amount.\"},\"status\":{\"type\":\"string\",\"enum\":[\"pending\",\"processing\",\"completed\",\"failed\",\"cancelled\"],\"description\":\"Payment status.\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Payment creation date.\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Payment last update date.\"}}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/payments - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "e6296593-d34a-4ba3-9784-97be65694ef9", + "name": "Create a new advertising credits payment", + "request": { + "name": "Create a new advertising credits payment", + "description": { + "content": "Create a new payment that will add advertising credits to an account. These credits will be available for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "payments", + ":payment_type" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of payment to create.", + "type": "text/plain" + }, + "type": "any", + "value": "credit_card", + "key": "payment_type" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"seller123\",\n \"amount\": 1000,\n \"description\": \"Credit top-up for advertising campaigns\",\n \"payment_details\": {\n \"card_number\": \"**** **** **** 1234\",\n \"cardholder_name\": \"John Doe\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "24372a8b-7a7d-4868-a4ab-ee30f0562b70", + "name": "Created", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "payments", + ":payment_type" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"seller123\",\n \"amount\": 1000,\n \"description\": \"Credit top-up for advertising campaigns\",\n \"payment_details\": {\n \"card_number\": \"**** **** **** 1234\",\n \"cardholder_name\": \"John Doe\"\n }\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Created", + "code": 201, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"payment_id\": \"pay-123456\",\n \"seller_id\": \"seller123\",\n \"payment_type\": \"credit_card\",\n \"amount\": 1000,\n \"status\": \"pending\",\n \"created_at\": \"2024-01-15T10:30:00Z\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "84709852-ce05-48af-924e-9b6b618bb911", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[POST]::/api/v1/payments/:payment_type - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/v1/payments/:payment_type - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/v1/payments/:payment_type - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"payment_id\":{\"type\":\"string\",\"description\":\"Payment identifier.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"payment_type\":{\"type\":\"string\",\"description\":\"Payment type.\"},\"amount\":{\"type\":\"number\",\"description\":\"Payment amount.\"},\"status\":{\"type\":\"string\",\"description\":\"Payment status.\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Payment creation date.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/v1/payments/:payment_type - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "bc29d756-2503-4115-96a3-249b4946a9d7", + "name": "Get advertising credits payment by ID", + "request": { + "name": "Get advertising credits payment by ID", + "description": { + "content": "Retrieve an advertising credits payment by its ID. This payment adds credits used for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "payments", + ":payment_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Payment identifier.", + "type": "text/plain" + }, + "type": "any", + "value": "pay-123456", + "key": "payment_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {} + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "0b589161-6592-4494-99be-9f4f2a31f0a9", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "payments", + ":payment_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"payment_id\": \"pay-123456\",\n \"seller_id\": \"seller123\",\n \"payment_type\": \"credit_card\",\n \"amount\": 1000,\n \"status\": \"completed\",\n \"description\": \"Credit top-up for advertising campaigns\",\n \"created_at\": \"2024-01-15T10:30:00Z\",\n \"updated_at\": \"2024-01-15T10:35:00Z\",\n \"payment_details\": {\n \"card_number\": \"**** **** **** 1234\",\n \"cardholder_name\": \"John Doe\"\n }\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "758cd417-d4e5-44cc-b43f-170ff5c8e45f", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/api/v1/payments/:payment_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/api/v1/payments/:payment_id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/api/v1/payments/:payment_id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"payment_id\":{\"type\":\"string\",\"description\":\"Payment identifier.\"},\"seller_id\":{\"type\":\"string\",\"description\":\"Seller identifier.\"},\"payment_type\":{\"type\":\"string\",\"description\":\"Payment type.\"},\"amount\":{\"type\":\"number\",\"description\":\"Payment amount.\"},\"status\":{\"type\":\"string\",\"enum\":[\"pending\",\"processing\",\"completed\",\"failed\",\"cancelled\"],\"description\":\"Payment status.\"},\"description\":{\"type\":\"string\",\"description\":\"Payment description.\"},\"created_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Payment creation date.\"},\"updated_at\":{\"type\":\"string\",\"format\":\"date-time\",\"description\":\"Payment last update date.\"},\"payment_details\":{\"type\":\"object\",\"description\":\"Additional payment details specific to the payment type.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/api/v1/payments/:payment_id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + }, + { + "id": "e976a517-5b7b-448f-abe9-85a6b77b1886", + "name": "Marketplace Integration - SSO Authentication", + "description": { + "content": "", + "type": "text/plain" + }, + "item": [ + { + "id": "6612af29-4698-479f-a401-b8421d8a8e4a", + "name": "Request SSO redirect URL", + "request": { + "name": "Request SSO redirect URL", + "description": { + "content": "Generate a single sign-on redirect URL that allows users to switch between environments without having to log in again. The purpose of Single Sign On is to enable seamless user authentication across marketplace and VTEX Ads environments.\r\n\r\n## Usage Flow\r\n\r\n1. **Request redirect URL**: Call this endpoint with seller and user information\r\n2. **User redirection**: Redirect the user to the returned `url_redirect`\r\n3. **Automatic login**: The user will be automatically logged into VTEX Ads platform\r\n\r\n>ℹ️ For more information about SSO implementation, see [VTEX Ads Single Sign On (SSO)](https://developers.vtex.com/docs/guides/vtex-ads-single-sign-on-sso).\r\n\r\n## Authentication\r\n\r\nThis endpoint uses `x-api-key` and `x-app-id` headers for authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "type": "text/plain" + }, + "url": { + "path": [ + "api", + "v1", + "sso", + "marketplace" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"1\",\n \"seller_name\": \"Store Example\",\n \"user_email\": \"example@example.com.br\",\n \"user_name\": \"User Example\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "9fac0faf-421e-4d12-b56e-9696ee5d52b5", + "name": "Success - SSO redirect URL generated successfully", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "sso", + "marketplace" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"1\",\n \"seller_name\": \"Store Example\",\n \"user_email\": \"example@example.com.br\",\n \"user_name\": \"User Example\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"url_redirect\": \"https://app.newtail.com.br/login/marketplace?token=xxxxx\"\n}", + "cookie": [] + }, + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "9774275a-5764-43aa-b0c1-df98d2d4100f", + "name": "Bad Request - Validation error in request parameters", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "sso", + "marketplace" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"1\",\n \"seller_name\": \"Store Example\",\n \"user_email\": \"example@example.com.br\",\n \"user_name\": \"User Example\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Bad Request", + "code": 400, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"message\": \"ValidationError\",\n \"errors\": [\n \"do\",\n \"officia laborum\"\n ]\n}", + "cookie": [] + }, + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "841aed97-2ff9-46e7-93f3-9e550febf908", + "name": "Internal Server Error - Unexpected error occurred while processing the request", + "originalRequest": { + "url": { + "path": [ + "api", + "v1", + "sso", + "marketplace" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) Type of the content being sent.", + "type": "text/plain" + }, + "key": "Content-Type", + "value": "application/json" + }, + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: apikey", + "type": "text/plain" + }, + "key": "X-App-Id", + "value": "" + } + ], + "method": "POST", + "body": { + "mode": "raw", + "raw": "{\n \"seller_id\": \"1\",\n \"seller_name\": \"Store Example\",\n \"user_email\": \"example@example.com.br\",\n \"user_name\": \"User Example\"\n}", + "options": { + "raw": { + "headerFamily": "json", + "language": "json" + } + } + } + }, + "status": "Internal Server Error", + "code": 500, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"message\": \"InternalServerError\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "c2a2593b-5df9-42ff-8fa3-6fcb1e520372", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[POST]::/api/v1/sso/marketplace - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[POST]::/api/v1/sso/marketplace - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[POST]::/api/v1/sso/marketplace - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"url_redirect\":{\"type\":\"string\",\"format\":\"uri\",\"description\":\"The redirect URL where the user should be sent to complete SSO authentication. Once redirected, the user will be logged into the VTEX Ads platform without requiring additional login steps.\"}},\"required\":[\"url_redirect\"]}\n\n// Validate if response matches JSON schema \npm.test(\"[POST]::/api/v1/sso/marketplace - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "8130aa4f-41ac-4321-8c3f-154ba5578325", + "name": "Get user information", + "request": { + "name": "Get user information", + "description": { + "content": "Query user information by user ID for SSO authentication purposes.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).", + "type": "text/plain" + }, + "url": { + "path": [ + "users", + ":user_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": false, + "description": { + "content": "(Required) Publisher identifier.", + "type": "text/plain" + }, + "key": "publisher_id", + "value": "pub-456" + } + ], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) User ID in the marketplace.", + "type": "text/plain" + }, + "type": "any", + "value": "user123", + "key": "user_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "basic", + "basic": [ + { + "type": "any", + "value": "{{basicAuthUsername}}", + "key": "username" + }, + { + "type": "any", + "value": "{{basicAuthPassword}}", + "key": "password" + } + ] + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "452080fd-ec0b-4c22-b972-009d6d41968f", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "users", + ":user_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Seller identifier.", + "type": "text/plain" + }, + "key": "seller_id", + "value": "seller123" + }, + { + "disabled": false, + "description": { + "content": "(Required) Publisher identifier.", + "type": "text/plain" + }, + "key": "publisher_id", + "value": "pub-456" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: basic", + "type": "text/plain" + }, + "key": "Authorization", + "value": "Basic " + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"name\": \"John Doe\",\n \"email\": \"john.doe@example.com\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "5be25292-d750-4507-ad79-8920a95b39b3", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/users/:user_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/users/:user_id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/users/:user_id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"User name.\"},\"email\":{\"type\":\"string\",\"description\":\"User email address.\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/users/:user_id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + }, + { + "id": "54e9e92d-ebac-4249-be34-085a4c1ec938", + "name": "Get seller information", + "request": { + "name": "Get seller information", + "description": { + "content": "Query seller information by seller ID for SSO authentication purposes.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).", + "type": "text/plain" + }, + "url": { + "path": [ + "sellers", + ":seller_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Publisher identifier.", + "type": "text/plain" + }, + "key": "publisher_id", + "value": "pub-456" + } + ], + "variable": [ + { + "disabled": false, + "description": { + "content": "(Required) Seller ID in the marketplace.", + "type": "text/plain" + }, + "type": "any", + "value": "seller123", + "key": "seller_id" + } + ] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + } + ], + "method": "GET", + "body": {}, + "auth": { + "type": "basic", + "basic": [ + { + "type": "any", + "value": "{{basicAuthUsername}}", + "key": "username" + }, + { + "type": "any", + "value": "{{basicAuthPassword}}", + "key": "password" + } + ] + } + }, + "response": [ + { + "_": { + "postman_previewlanguage": "json" + }, + "id": "6687572d-be60-48e9-8238-234cba05d6b6", + "name": "OK", + "originalRequest": { + "url": { + "path": [ + "sellers", + ":seller_id" + ], + "host": [ + "{{baseUrl}}" + ], + "query": [ + { + "disabled": false, + "description": { + "content": "(Required) Publisher identifier.", + "type": "text/plain" + }, + "key": "publisher_id", + "value": "pub-456" + } + ], + "variable": [] + }, + "header": [ + { + "disabled": false, + "description": { + "content": "(Required) HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "type": "text/plain" + }, + "key": "Accept", + "value": "application/json" + }, + { + "key": "Accept", + "value": "application/json" + }, + { + "description": { + "content": "Added as a part of security scheme: basic", + "type": "text/plain" + }, + "key": "Authorization", + "value": "Basic " + } + ], + "method": "GET", + "body": {} + }, + "status": "OK", + "code": 200, + "header": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": "{\n \"name\": \"ACME Corp\",\n \"cnpj\": \"12345678000190\"\n}", + "cookie": [] + } + ], + "event": [ + { + "listen": "test", + "script": { + "id": "c2b12b4d-ebe5-4fa9-81b7-2a1198537022", + "type": "text/javascript", + "exec": [ + "// Validate status 2xx \npm.test(\"[GET]::/sellers/:seller_id - Status code is 2xx\", function () {\n pm.response.to.be.success;\n});\n", + "// Validate if response header has matching content-type\npm.test(\"[GET]::/sellers/:seller_id - Content-Type is application/json\", function () {\n pm.expect(pm.response.headers.get(\"Content-Type\")).to.include(\"application/json\");\n});\n", + "// Validate if response has JSON Body \npm.test(\"[GET]::/sellers/:seller_id - Response has JSON Body\", function () {\n pm.response.to.have.jsonBody();\n});\n", + "// Response Validation\nconst schema = {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Seller name.\"},\"cnpj\":{\"type\":\"string\",\"description\":\"Brazilian tax ID (CNPJ).\"}}}\n\n// Validate if response matches JSON schema \npm.test(\"[GET]::/sellers/:seller_id - Schema is valid\", function() {\n pm.response.to.have.jsonSchema(schema,{unknownFormats: [\"int32\", \"int64\", \"float\", \"double\"]});\n});\n" + ] + } + } + ], + "protocolProfileBehavior": { + "disableBodyPruning": true + } + } + ], + "event": [] + } + ], + "auth": { + "type": "apikey", + "apikey": [ + { + "type": "any", + "value": "X-App-Id", + "key": "key" + }, + { + "type": "any", + "value": "{{apiKey}}", + "key": "value" + }, + { + "type": "any", + "value": "header", + "key": "in" + } + ] + }, "event": [], "variable": [ { "type": "any", - "value": "https://newtail-media.newtail.com.br", + "value": "https://api-retail-media.newtail.com.br", "key": "baseUrl" } ], "info": { - "_postman_id": "329e4de0-a0cf-46a5-a5f4-07330abbe3b0", + "_postman_id": "077af938-c609-4535-8a3f-d2fcfa33c198", "name": "VTEX Ads API", "version": { "raw": "1.0.0", @@ -1794,7 +7800,7 @@ }, "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "description": { - "content": "API for VTEX Ads services, including Beacon, RMA, and Catalog functionalities.", + "content": "VTEX Ads API enables merchants and marketplace operators to manage advertising campaigns, track ad performance, and synchronize product catalogs within the VTEX Ads platform.\n\nThis specification includes both VTEX Ads-hosted endpoints and marketplace-hosted endpoints that must be implemented by external marketplaces for complete integration.\n\nThis API is primarily used by:\n- Store developers\n- Marketplace operators\n- Integration partners\n- Advertising platform providers\n\nWith this API you can:\n- Synchronize product catalog information for advertising\n- Track ad impressions, clicks, and views\n- Monitor conversion events and campaign performance\n- Manage ad inventory and placements\n- Handle credit transfers and balance inquiries\n- Implement SSO authentication flows\n- Export comprehensive reports in JSON or XLSX formats\n\n>ℹ️ Learn more about [VTEX Ads](https://developers.vtex.com/docs/guides) and [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).\n\n## Before you begin\n\n- For bulk operations (product and inventory updates), there is a limit of 500 objects per request and 3 simultaneous requests.\n- The event URLs for tracking impressions, clicks and views must not be constructed manually — always use the URLs provided from `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-).\n- Authentication is required using `X-App-Id` and `X-Api-Key` headers. Contact [our support](https://help.vtex.com/en/tutorial/how-does-vtex-support-work--2eAT5EyOvaLoHdIWDVaxC3) to obtain these credentials.\n- Some endpoints marked with `{marketplaceEndpoint}` must be implemented by the external marketplace, not VTEX Ads.\n\n## Index\n\n### Catalog synchronization\n- `POST` [Synchronize product information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/product/bulk/products)\n- `POST` [Synchronize inventory information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/product/bulk/inventories)\n\n### Ads events notification\n- `POST` [Track ad impressions](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/impression/-ad_id-)\n- `POST` [Track ad clicks](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/click/-ad_id-)\n- `POST` [Track ad views](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/view/-ad_id-)\n- `POST` [Track conversions](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/conversion)\n\n### Ads\n- `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-)\n\n### Reports\n- `GET` [Export advertisers report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/report/v2/advertisers)\n- `GET` [Export publishers report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/report/v2/publishers)\n- `GET` [Export network publishers report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/report/network/publishers)\n- `GET` [Export campaigns report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/campaign/v2)\n- `GET` [Export ads report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/ad/results/v2)\n\n### Marketplace Integration\n- `POST` [Request SSO redirect URL](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/api/v1/sso/marketplace)\n- `GET` [Search catalog products](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/search) (Marketplace endpoint)\n- `GET` [Check credits balance](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/api/v1/checking_account) (Marketplace endpoint)\n- `POST` [Request credits transfer](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/api/v1/checking_account/transfer) (Marketplace endpoint)\n- `GET` [Get user information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/users/-user_id-) (Marketplace endpoint)\n- `GET` [Get seller information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/sellers/-seller_id-) (Marketplace endpoint)\n\n| Parameter name | Description | Type |\n| - | - | - |\n| `X-App-Id` | Publisher App ID for authorization | Authentication header |\n| `X-Api-Key` | API Key for authentication | Authentication header |\n| `Content-Type` | Type of the content being sent | Request header |\n| `Accept` | HTTP Client Negotiation Accept Header | Request header |", "type": "text/plain" } } diff --git a/VTEX - Ads API.json b/VTEX - Ads API.json index 2711692e4b..9321ac4ebc 100644 --- a/VTEX - Ads API.json +++ b/VTEX - Ads API.json @@ -3,7 +3,7 @@ "info": { "version": "1.0.0", "title": "VTEX Ads API", - "description": "VTEX Ads API enables merchants and marketplace operators to manage advertising campaigns, track ad performance, and synchronize product catalogs within the VTEX Ads platform.\n\nThis API is primarily used by:\n- Store developers\n- Marketplace operators\n- Integration partners\n- Advertising platform providers\n\nWith this API you can:\n- Synchronize product catalog information for advertising\n- Track ad impressions, clicks, and views\n- Monitor conversion events and campaign performance\n- Manage ad inventory and placements\n\n>ℹ️ Learn more about [VTEX Ads](https://developers.vtex.com/docs/guides).\n\n## Before you begin\n\n- For bulk operations (product and inventory updates), there is a limit of 500 objects per request and 3 simultaneous requests.\n- The event URLs for tracking impressions, clicks and views must not be constructed manually — always use the URLs provided from `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-).\n- Authentication is required using `X-App-Id` and `X-Api-Key` headers. Contact [our support](https://help.vtex.com/en/tutorial/how-does-vtex-support-work--2eAT5EyOvaLoHdIWDVaxC3) to obtain these credentials.\n\n## Index\n\n### Catalog synchronization\n- `POST` [Synchronize product information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/product/bulk/products)\n- `POST` [Synchronize inventory information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/product/bulk/inventories)\n\n### Ads events notification\n- `POST` [Track ad impressions](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/impression/-ad_id-)\n- `POST` [Track ad clicks](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/click/-ad_id-)\n- `POST` [Track ad views](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/view/-ad_id-)\n- `POST` [Track conversions](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/conversion)\n\n### Ads\n- `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-)\n\n| Parameter name | Description | Type |\n| - | - | - |\n| `X-App-Id` | Publisher App ID for authorization | Authentication header |\n| `X-Api-Key` | API Key for authentication | Authentication header |\n| `Content-Type` | Type of the content being sent | Request header |\n| `Accept` | HTTP Client Negotiation Accept Header | Request header |" + "description": "VTEX Ads API enables merchants and marketplace operators to manage advertising campaigns, track ad performance, and synchronize product catalogs within the VTEX Ads platform.\n\nThis specification includes both VTEX Ads-hosted endpoints and marketplace-hosted endpoints that must be implemented by external marketplaces for complete integration.\n\nThis API is primarily used by:\n- Store developers\n- Marketplace operators\n- Integration partners\n- Advertising platform providers\n\nWith this API you can:\n- Synchronize product catalog information for advertising\n- Track ad impressions, clicks, and views\n- Monitor conversion events and campaign performance\n- Manage ad inventory and placements\n- Handle credit transfers and balance inquiries\n- Implement SSO authentication flows\n- Export comprehensive reports in JSON or XLSX formats\n\n>ℹ️ Learn more about [VTEX Ads](https://developers.vtex.com/docs/guides) and [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).\n\n## Before you begin\n\n- For bulk operations (product and inventory updates), there is a limit of 500 objects per request and 3 simultaneous requests.\n- The event URLs for tracking impressions, clicks and views must not be constructed manually — always use the URLs provided from `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-).\n- Authentication is required using `X-App-Id` and `X-Api-Key` headers. Contact [our support](https://help.vtex.com/en/tutorial/how-does-vtex-support-work--2eAT5EyOvaLoHdIWDVaxC3) to obtain these credentials.\n- Some endpoints marked with `{marketplaceEndpoint}` must be implemented by the external marketplace, not VTEX Ads.\n\n## Index\n\n### Catalog synchronization\n- `POST` [Synchronize product information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/product/bulk/products)\n- `POST` [Synchronize inventory information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/product/bulk/inventories)\n\n### Ads events notification\n- `POST` [Track ad impressions](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/impression/-ad_id-)\n- `POST` [Track ad clicks](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/click/-ad_id-)\n- `POST` [Track ad views](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/view/-ad_id-)\n- `POST` [Track conversions](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/beacon/conversion)\n\n### Ads\n- `POST` [Get ads](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/v1/rma/-publisher_id-)\n\n### Reports\n- `GET` [Export advertisers report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/report/v2/advertisers)\n- `GET` [Export publishers report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/report/v2/publishers)\n- `GET` [Export network publishers report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/report/network/publishers)\n- `GET` [Export campaigns report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/campaign/v2)\n- `GET` [Export ads report](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/ad/results/v2)\n\n### Marketplace Integration\n- `POST` [Request SSO redirect URL](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/api/v1/sso/marketplace)\n- `GET` [Search catalog products](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/search) (Marketplace endpoint)\n- `GET` [Check credits balance](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/api/v1/checking_account) (Marketplace endpoint)\n- `POST` [Request credits transfer](https://developers.vtex.com/docs/api-reference/vtex-ads-api#post-/api/v1/checking_account/transfer) (Marketplace endpoint)\n- `GET` [Get user information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/users/-user_id-) (Marketplace endpoint)\n- `GET` [Get seller information](https://developers.vtex.com/docs/api-reference/vtex-ads-api#get-/sellers/-seller_id-) (Marketplace endpoint)\n\n| Parameter name | Description | Type |\n| - | - | - |\n| `X-App-Id` | Publisher App ID for authorization | Authentication header |\n| `X-Api-Key` | API Key for authentication | Authentication header |\n| `Content-Type` | Type of the content being sent | Request header |\n| `Accept` | HTTP Client Negotiation Accept Header | Request header |" }, "servers": [ { @@ -13,6 +13,16 @@ { "url": "https://events.newtail-media.newtail.com.br", "description": "VTEX Ads events server." + }, + { + "url": "{marketplaceEndpoint}", + "description": "External marketplace server. This variable represents the base URL of the marketplace's API infrastructure that must implement specific endpoints for VTEX Ads integration.", + "variables": { + "marketplaceEndpoint": { + "description": "The base URL of the external marketplace's API server.", + "default": "https://marketplace-example.com" + } + } } ], "paths": { @@ -1642,49 +1652,3303 @@ } } } - } - }, - "components": { - "securitySchemes": { - "X-App-Id": { - "name": "X-App-Id", - "type": "apiKey", - "in": "header", - "description": "Publisher App ID for authorization." - }, - "X-Api-Key": { - "name": "X-Api-Key", - "type": "apiKey", - "in": "header", - "description": "API Key for authentication." + }, + "/search": { + "servers": [ + { + "url": "{marketplaceEndpoint}", + "description": "External marketplace server catalog endpoint. VTEX Ads will call this endpoint on the marketplace's infrastructure with the /search suffix and required parameters." + } + ], + "get": { + "tags": [ + "Marketplace integration - Catalog" + ], + "summary": "Search catalog products", + "description": "Query the retailer's catalog to search for products with various filters. This API enables product synchronization between marketplaces and VTEX Ads.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "query", + "description": "Filter by seller identifier.", + "required": false, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "name", + "in": "query", + "description": "Partial search by product name.", + "required": false, + "schema": { + "type": "string", + "example": "Red Sneakers" + } + }, + { + "name": "skus", + "in": "query", + "description": "Filter by a list of SKUs (comma-separated).", + "required": false, + "schema": { + "type": "string", + "example": "sku1,sku2,sku3" + } + }, + { + "name": "eans", + "in": "query", + "description": "Filter by a list of EANs (comma-separated).", + "required": false, + "schema": { + "type": "string", + "example": "1234567890123,9876543210987" + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items that should be returned.", + "required": false, + "schema": { + "type": "integer", + "example": 20 + } + }, + { + "name": "page", + "in": "query", + "description": "Current page number. Starts at 0 (zero).", + "required": false, + "schema": { + "type": "integer", + "example": 0 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "required": [ + "product_sku", + "name", + "categories", + "brand", + "urls", + "stocks" + ], + "properties": { + "product_sku": { + "type": "string", + "description": "Unique identifier of the parent product.", + "example": "sku123" + }, + "name": { + "type": "string", + "description": "Product title.", + "example": "Red Sneakers" + }, + "image_url": { + "type": "string", + "description": "Public product image URL, can be just a thumbnail.", + "example": "https://example.com/image.jpg" + }, + "categories": { + "type": "string", + "description": "Product categories.", + "example": "Sports/Shoes" + }, + "brand": { + "type": "string", + "description": "Product brand name.", + "example": "Nike" + }, + "gtins": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of EANs.", + "example": ["1234567890123"] + }, + "urls": { + "type": "array", + "items": { + "type": "object", + "required": [ + "url" + ], + "properties": { + "site": { + "type": "string", + "description": "Site brand name.", + "example": "example-store" + }, + "url": { + "type": "string", + "description": "Product URL.", + "example": "https://example.com/product/red-sneakers" + } + } + }, + "description": "Product URL information." + }, + "stocks": { + "type": "array", + "items": { + "type": "object", + "required": [ + "quantity" + ], + "properties": { + "site": { + "type": "string", + "description": "Site brand name.", + "example": "example-store" + }, + "seller_id": { + "type": "string", + "description": "Seller ID identifier.", + "example": "seller123" + }, + "quantity": { + "type": "number", + "format": "float", + "description": "Stock quantity.", + "example": 10 + } + } + }, + "description": "Product stock information." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Information returned during ad queries without modification.", + "example": { + "color": "red", + "size": "42" + } + } + } + } + }, + "example": [ + { + "product_sku": "sku123", + "name": "Red Sneakers", + "image_url": "https://example.com/image.jpg", + "categories": "Sports/Shoes", + "brand": "Nike", + "gtins": ["1234567890123"], + "urls": [ + { + "site": "example-store", + "url": "https://example.com/product/red-sneakers" + } + ], + "stocks": [ + { + "site": "example-store", + "seller_id": "seller123", + "quantity": 10 + } + ], + "metadata": { + "color": "red", + "size": "42" + } + } + ] + } + } + } + }, + "security": [ + { + "BasicAuth": [] + } + ] } }, - "parameters": { - "Content-Type": { - "name": "Content-Type", - "in": "header", - "description": "Type of the content being sent.", - "required": true, - "style": "simple", - "schema": { - "type": "string", - "example": "application/json" + "/api/v1/advertisers": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Advertiser management" + ], + "summary": "Search advertisers", + "description": "Search for advertisers with optional filters.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "example": 20 + } + }, + { + "name": "page", + "in": "query", + "description": "Page number (starts at 0).", + "required": false, + "schema": { + "type": "integer", + "example": 0 + } + }, + { + "name": "name", + "in": "query", + "description": "Filter by advertiser name (partial match).", + "required": false, + "schema": { + "type": "string", + "example": "Nike Store" + } + }, + { + "name": "seller_id", + "in": "query", + "description": "Filter by seller identifier.", + "required": false, + "schema": { + "type": "string", + "example": "seller123" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "seller_id": { + "type": "string", + "description": "Unique seller identifier.", + "example": "seller123" + }, + "name": { + "type": "string", + "description": "Advertiser name.", + "example": "Nike Store" + }, + "cnpj": { + "type": "string", + "description": "Tax ID number.", + "example": "12345678000190" + } + } + } + } + } + } + } } }, - "Accept": { - "name": "Accept", - "in": "header", - "description": "HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", - "required": true, - "style": "simple", - "schema": { - "type": "string", - "example": "application/json" + "post": { + "tags": [ + "Marketplace Integration - Advertiser management" + ], + "summary": "Create advertiser", + "description": "Create a new advertiser entity.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "seller_id", + "name" + ], + "properties": { + "seller_id": { + "type": "string", + "description": "Unique seller identifier.", + "example": "seller123" + }, + "name": { + "type": "string", + "description": "Advertiser name.", + "example": "Nike Store" + }, + "cnpj": { + "type": "string", + "description": "Tax ID number.", + "example": "12345678000190" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "seller_id": { + "type": "string", + "description": "Unique seller identifier.", + "example": "seller123" + }, + "name": { + "type": "string", + "description": "Advertiser name.", + "example": "Nike Store" + }, + "cnpj": { + "type": "string", + "description": "Tax ID number.", + "example": "12345678000190" + } + } + } + } + } + } } } - } - }, - "security": [ + }, + "/api/v1/advertisers/{seller_id}": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Advertiser management" + ], + "summary": "Get advertiser by seller ID", + "description": "Retrieve an advertiser by their seller ID.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "path", + "description": "Unique identifier of the seller.", + "required": true, + "schema": { + "type": "string", + "example": "seller123" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "seller_id": { + "type": "string", + "description": "Unique seller identifier.", + "example": "seller123" + }, + "name": { + "type": "string", + "description": "Advertiser name.", + "example": "Nike Store" + }, + "cnpj": { + "type": "string", + "description": "Tax ID number.", + "example": "12345678000190" + } + } + } + } + } + } + } + }, + "patch": { + "tags": [ + "Marketplace Integration - Advertiser management" + ], + "summary": "Update advertiser by seller ID", + "description": "Update an advertiser's information by their seller ID.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "path", + "description": "Unique identifier of the seller.", + "required": true, + "schema": { + "type": "string", + "example": "seller123" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Advertiser name.", + "example": "Nike Store Updated" + }, + "cnpj": { + "type": "string", + "description": "Tax ID number.", + "example": "12345678000190" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "seller_id": { + "type": "string", + "description": "Unique seller identifier.", + "example": "seller123" + }, + "name": { + "type": "string", + "description": "Advertiser name.", + "example": "Nike Store Updated" + }, + "cnpj": { + "type": "string", + "description": "Tax ID number.", + "example": "12345678000190" + } + } + } + } + } + } + } + } + }, + "/api/v1/campaigns": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Campaign management" + ], + "summary": "List campaigns", + "description": "List all campaigns with optional filters.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "example": 20 + } + }, + { + "name": "page", + "in": "query", + "description": "Page number (starts at 0).", + "required": false, + "schema": { + "type": "integer", + "example": 0 + } + }, + { + "name": "status", + "in": "query", + "description": "Filter by campaign status.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "active", + "paused", + "ended" + ], + "example": "active" + } + }, + { + "name": "seller_id", + "in": "query", + "description": "Filter by seller identifier.", + "required": false, + "schema": { + "type": "string", + "example": "seller123" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "campaign_id": { + "type": "string", + "description": "Unique campaign identifier.", + "example": "camp-123456" + }, + "name": { + "type": "string", + "description": "Campaign name.", + "example": "Summer Sale 2024" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "status": { + "type": "string", + "enum": [ + "active", + "paused", + "ended" + ], + "description": "Campaign status.", + "example": "active" + }, + "budget": { + "type": "number", + "description": "Campaign budget.", + "example": 10000.0 + }, + "start_date": { + "type": "string", + "format": "date-time", + "description": "Campaign start date.", + "example": "2024-01-01T00:00:00Z" + }, + "end_date": { + "type": "string", + "format": "date-time", + "description": "Campaign end date.", + "example": "2024-12-31T23:59:59Z" + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Marketplace Integration - Campaign management" + ], + "summary": "Create campaign", + "description": "Create a new advertising campaign.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "name", + "seller_id", + "budget" + ], + "properties": { + "name": { + "type": "string", + "description": "Campaign name.", + "example": "Summer Sale 2024" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "budget": { + "type": "number", + "description": "Campaign budget.", + "example": 10000.0 + }, + "start_date": { + "type": "string", + "format": "date-time", + "description": "Campaign start date.", + "example": "2024-01-01T00:00:00Z" + }, + "end_date": { + "type": "string", + "format": "date-time", + "description": "Campaign end date.", + "example": "2024-12-31T23:59:59Z" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "campaign_id": { + "type": "string", + "description": "Unique campaign identifier.", + "example": "camp-123456" + }, + "name": { + "type": "string", + "description": "Campaign name.", + "example": "Summer Sale 2024" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "status": { + "type": "string", + "enum": [ + "active", + "paused", + "ended" + ], + "description": "Campaign status.", + "example": "active" + }, + "budget": { + "type": "number", + "description": "Campaign budget.", + "example": 10000.0 + }, + "start_date": { + "type": "string", + "format": "date-time", + "description": "Campaign start date.", + "example": "2024-01-01T00:00:00Z" + }, + "end_date": { + "type": "string", + "format": "date-time", + "description": "Campaign end date.", + "example": "2024-12-31T23:59:59Z" + } + } + } + } + } + } + } + } + }, + "/api/v1/campaigns/{campaign_id}": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Campaign management" + ], + "summary": "Get campaign by ID", + "description": "Retrieve a campaign by its ID.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "campaign_id", + "in": "path", + "description": "Unique identifier of the campaign.", + "required": true, + "schema": { + "type": "string", + "example": "camp-123456" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "campaign_id": { + "type": "string", + "description": "Unique campaign identifier.", + "example": "camp-123456" + }, + "name": { + "type": "string", + "description": "Campaign name.", + "example": "Summer Sale 2024" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "status": { + "type": "string", + "enum": [ + "active", + "paused", + "ended" + ], + "description": "Campaign status.", + "example": "active" + }, + "budget": { + "type": "number", + "description": "Campaign budget.", + "example": 10000.0 + }, + "start_date": { + "type": "string", + "format": "date-time", + "description": "Campaign start date.", + "example": "2024-01-01T00:00:00Z" + }, + "end_date": { + "type": "string", + "format": "date-time", + "description": "Campaign end date.", + "example": "2024-12-31T23:59:59Z" + } + } + } + } + } + } + } + }, + "patch": { + "tags": [ + "Marketplace Integration - Campaign management" + ], + "summary": "Update campaign by ID", + "description": "Update a campaign's information by its ID.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "campaign_id", + "in": "path", + "description": "Unique identifier of the campaign.", + "required": true, + "schema": { + "type": "string", + "example": "camp-123456" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Campaign name.", + "example": "Summer Sale 2024 Updated" + }, + "status": { + "type": "string", + "enum": [ + "active", + "paused", + "ended" + ], + "description": "Campaign status.", + "example": "paused" + }, + "budget": { + "type": "number", + "description": "Campaign budget.", + "example": 15000.0 + }, + "end_date": { + "type": "string", + "format": "date-time", + "description": "Campaign end date.", + "example": "2024-12-31T23:59:59Z" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "campaign_id": { + "type": "string", + "description": "Unique campaign identifier.", + "example": "camp-123456" + }, + "name": { + "type": "string", + "description": "Campaign name.", + "example": "Summer Sale 2024 Updated" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "status": { + "type": "string", + "enum": [ + "active", + "paused", + "ended" + ], + "description": "Campaign status.", + "example": "paused" + }, + "budget": { + "type": "number", + "description": "Campaign budget.", + "example": 15000.0 + }, + "start_date": { + "type": "string", + "format": "date-time", + "description": "Campaign start date.", + "example": "2024-01-01T00:00:00Z" + }, + "end_date": { + "type": "string", + "format": "date-time", + "description": "Campaign end date.", + "example": "2024-12-31T23:59:59Z" + } + } + } + } + } + } + } + } + }, + "/api/v1/metrics/macro": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Metrics" + ], + "summary": "Get macro metrics", + "description": "Retrieve macro-level performance metrics across campaigns.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "start_date", + "in": "query", + "description": "Start date for metrics query.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2024-01-01" + } + }, + { + "name": "end_date", + "in": "query", + "description": "End date for metrics query.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2024-12-31" + } + }, + { + "name": "seller_id", + "in": "query", + "description": "Filter by seller identifier.", + "required": false, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "campaign_id", + "in": "query", + "description": "Filter by campaign identifier.", + "required": false, + "schema": { + "type": "string", + "example": "camp-123456" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "total_impressions": { + "type": "integer", + "description": "Total number of ad impressions.", + "example": 1000000 + }, + "total_clicks": { + "type": "integer", + "description": "Total number of ad clicks.", + "example": 50000 + }, + "total_spend": { + "type": "number", + "description": "Total advertising spend.", + "example": 25000.50 + }, + "total_conversions": { + "type": "integer", + "description": "Total number of conversions.", + "example": 2500 + }, + "ctr": { + "type": "number", + "description": "Click-through rate.", + "example": 0.05 + }, + "cpc": { + "type": "number", + "description": "Cost per click.", + "example": 0.50 + }, + "conversion_rate": { + "type": "number", + "description": "Conversion rate.", + "example": 0.05 + } + } + } + } + } + } + } + } + }, + "/api/v1/metrics/historical": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Metrics" + ], + "summary": "Get historical metrics", + "description": "Retrieve historical performance metrics with daily granularity.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "start_date", + "in": "query", + "description": "Start date for metrics query.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2024-01-01" + } + }, + { + "name": "end_date", + "in": "query", + "description": "End date for metrics query.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2024-12-31" + } + }, + { + "name": "seller_id", + "in": "query", + "description": "Filter by seller identifier.", + "required": false, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "campaign_id", + "in": "query", + "description": "Filter by campaign identifier.", + "required": false, + "schema": { + "type": "string", + "example": "camp-123456" + } + }, + { + "name": "granularity", + "in": "query", + "description": "Time granularity for the data.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "daily", + "weekly", + "monthly" + ], + "default": "daily", + "example": "daily" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "date": { + "type": "string", + "format": "date", + "description": "Date of the metrics.", + "example": "2024-01-01" + }, + "impressions": { + "type": "integer", + "description": "Number of ad impressions.", + "example": 10000 + }, + "clicks": { + "type": "integer", + "description": "Number of ad clicks.", + "example": 500 + }, + "spend": { + "type": "number", + "description": "Advertising spend.", + "example": 250.50 + }, + "conversions": { + "type": "integer", + "description": "Number of conversions.", + "example": 25 + } + } + } + } + } + } + } + } + } + }, + "/api/v1/checking_accounts": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Credits management" + ], + "summary": "List advertiser advertising credit accounts", + "description": "List advertising credit accounts for advertisers with optional filters. These accounts hold credits used for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "query", + "description": "Filter by seller identifier.", + "required": false, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "page", + "in": "query", + "description": "Page number (starts at 0).", + "required": false, + "schema": { + "type": "integer", + "example": 0 + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "example": 20 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "seller_name": { + "type": "string", + "description": "Seller name.", + "example": "Nike Store" + }, + "balance": { + "type": "string", + "description": "Available balance amount.", + "example": "1111.00" + }, + "currency": { + "type": "string", + "description": "Currency code.", + "example": "USD" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Account creation date.", + "example": "2024-01-01T00:00:00Z" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Last update date.", + "example": "2024-01-15T10:30:00Z" + } + } + } + } + } + } + } + } + } + }, + "/api/v1/checking_accounts/{seller_id}/transactions": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Credits management" + ], + "summary": "List advertising credits from an account", + "description": "List advertising credits from a specific seller account. These credits are used for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "path", + "description": "Seller identifier.", + "required": true, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "page", + "in": "query", + "description": "Page number (starts at 0).", + "required": false, + "schema": { + "type": "integer", + "example": 0 + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "example": 20 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "transaction_id": { + "type": "string", + "description": "Transaction identifier.", + "example": "txn-123456" + }, + "type": { + "type": "string", + "enum": [ + "credit", + "debit", + "charge", + "refund" + ], + "description": "Transaction type.", + "example": "credit" + }, + "amount": { + "type": "number", + "description": "Transaction amount.", + "example": 150.00 + }, + "date": { + "type": "string", + "format": "date-time", + "description": "Transaction date.", + "example": "2024-01-15T10:30:00Z" + }, + "description": { + "type": "string", + "description": "Transaction description.", + "example": "Credit addition to account" + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "Marketplace Integration - Credits management" + ], + "summary": "Add advertising credits to account", + "description": "Add advertising credits to an advertiser account. These credits will be available for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "path", + "description": "Seller identifier.", + "required": true, + "schema": { + "type": "string", + "example": "seller123" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "seller_id", + "amount" + ], + "properties": { + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "amount": { + "type": "number", + "description": "Amount to credit.", + "example": 1000.00 + }, + "description": { + "type": "string", + "description": "Credit description.", + "example": "Monthly credit allocation" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "transaction_id": { + "type": "string", + "description": "Transaction identifier.", + "example": "txn-123456" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "amount": { + "type": "number", + "description": "Credited amount.", + "example": 1000.00 + }, + "new_balance": { + "type": "number", + "description": "New account balance after credit.", + "example": 6000.00 + } + } + } + } + } + } + } + } + }, + "/api/v1/checking_account": { + "servers": [ + { + "url": "{marketplaceEndpoint}", + "description": "External marketplace server endpoint. VTEX Ads will call this endpoint on the marketplace's infrastructure to check the seller's available balance." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Credits management" + ], + "summary": "Check advertising credits balance", + "description": "Check the available advertising credits balance for a seller account. These credits are used for advertising campaigns and ad spending.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "query", + "description": "Seller identifier.", + "required": true, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "publisher_id", + "in": "query", + "description": "Publisher identifier (optional, used only when an entity manages multiple publishers).", + "required": false, + "schema": { + "type": "string", + "example": "pub-456" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "total": { + "type": "string", + "description": "Available balance amount.", + "example": "1111.00" + } + } + } + } + } + } + }, + "security": [ + { + "BasicAuth": [] + } + ] + } + }, + "/api/v1/payments": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Credits payments" + ], + "summary": "List advertising credits payments", + "description": "List payments for advertising credits with optional filters. These payments add credits to advertiser accounts for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "query", + "description": "Filter by seller identifier.", + "required": false, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "page", + "in": "query", + "description": "Page number (starts at 0).", + "required": false, + "schema": { + "type": "integer", + "example": 0 + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items to return per page.", + "required": false, + "schema": { + "type": "integer", + "example": 20 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "payment_id": { + "type": "string", + "description": "Payment identifier.", + "example": "pay-123456" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "payment_type": { + "type": "string", + "description": "Payment type.", + "example": "credit_card" + }, + "amount": { + "type": "number", + "description": "Payment amount.", + "example": 1000.00 + }, + "status": { + "type": "string", + "enum": [ + "pending", + "processing", + "completed", + "failed", + "cancelled" + ], + "description": "Payment status.", + "example": "completed" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Payment creation date.", + "example": "2024-01-15T10:30:00Z" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Payment last update date.", + "example": "2024-01-15T10:35:00Z" + } + } + } + } + } + } + } + } + } + }, + "/api/v1/payments/{payment_type}": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "post": { + "tags": [ + "Marketplace Integration - Credits payments" + ], + "summary": "Create a new advertising credits payment", + "description": "Create a new payment that will add advertising credits to an account. These credits will be available for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "payment_type", + "in": "path", + "description": "Type of payment to create.", + "required": true, + "schema": { + "type": "string", + "enum": [ + "credit_card", + "bank_transfer", + "pix", + "boleto" + ], + "example": "credit_card" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "seller_id", + "amount" + ], + "properties": { + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "amount": { + "type": "number", + "description": "Payment amount.", + "example": 1000.00 + }, + "description": { + "type": "string", + "description": "Payment description.", + "example": "Credit top-up for advertising campaigns" + }, + "payment_details": { + "type": "object", + "description": "Additional payment details specific to the payment type.", + "example": { + "card_number": "**** **** **** 1234", + "cardholder_name": "John Doe" + } + } + } + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "payment_id": { + "type": "string", + "description": "Payment identifier.", + "example": "pay-123456" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "payment_type": { + "type": "string", + "description": "Payment type.", + "example": "credit_card" + }, + "amount": { + "type": "number", + "description": "Payment amount.", + "example": 1000.00 + }, + "status": { + "type": "string", + "description": "Payment status.", + "example": "pending" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Payment creation date.", + "example": "2024-01-15T10:30:00Z" + } + } + } + } + } + } + } + } + }, + "/api/v1/payments/{payment_id}": { + "servers": [ + { + "url": "https://api.ads.vtex.com", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Marketplace Integration - Credits payments" + ], + "summary": "Get advertising credits payment by ID", + "description": "Retrieve an advertising credits payment by its ID. This payment adds credits used for advertising campaigns and ad spending.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "payment_id", + "in": "path", + "description": "Payment identifier.", + "required": true, + "schema": { + "type": "string", + "example": "pay-123456" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "payment_id": { + "type": "string", + "description": "Payment identifier.", + "example": "pay-123456" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "seller123" + }, + "payment_type": { + "type": "string", + "description": "Payment type.", + "example": "credit_card" + }, + "amount": { + "type": "number", + "description": "Payment amount.", + "example": 1000.00 + }, + "status": { + "type": "string", + "enum": [ + "pending", + "processing", + "completed", + "failed", + "cancelled" + ], + "description": "Payment status.", + "example": "completed" + }, + "description": { + "type": "string", + "description": "Payment description.", + "example": "Credit top-up for advertising campaigns" + }, + "created_at": { + "type": "string", + "format": "date-time", + "description": "Payment creation date.", + "example": "2024-01-15T10:30:00Z" + }, + "updated_at": { + "type": "string", + "format": "date-time", + "description": "Payment last update date.", + "example": "2024-01-15T10:35:00Z" + }, + "payment_details": { + "type": "object", + "description": "Additional payment details specific to the payment type.", + "example": { + "card_number": "**** **** **** 1234", + "cardholder_name": "John Doe" + } + } + } + } + } + } + } + } + } + }, + "/api/v1/checking_account/transfer": { + "servers": [ + { + "url": "{marketplaceEndpoint}", + "description": "External marketplace server endpoint. VTEX Ads will call this endpoint on the marketplace's infrastructure to request credit transfers." + } + ], + "post": { + "tags": [ + "Marketplace Integration - Credits management" + ], + "summary": "Request advertising credits transfer", + "description": "Request a transfer of a specified amount of advertising credits. These credits are used for advertising campaigns and ad spending.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "amount", + "seller_id", + "publisher_id", + "transfer_identity_id" + ], + "properties": { + "amount": { + "type": "string", + "description": "Transfer amount.", + "example": "10.00" + }, + "seller_id": { + "type": "string", + "description": "Seller identifier.", + "example": "SELLER_ID" + }, + "publisher_id": { + "type": "string", + "description": "Publisher identifier.", + "example": "PUBLISHER_ID" + }, + "transfer_identity_id": { + "type": "string", + "format": "uuid", + "description": "Unique transfer identity identifier.", + "example": "550e8400-e29b-41d4-a716-446655440000" + } + } + }, + "example": { + "amount": "10.00", + "seller_id": "SELLER_ID", + "publisher_id": "PUBLISHER_ID", + "transfer_identity_id": "uuid" + } + } + } + }, + "responses": { + "201": { + "description": "Created - Synchronous success", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "transaction_id": { + "type": "string", + "description": "Transaction identifier.", + "example": "TRANSACTION_ID" + }, + "status": { + "type": "string", + "enum": [ + "success" + ], + "description": "Transfer status.", + "example": "success" + } + } + } + } + } + }, + "202": { + "description": "Accepted - Asynchronous processing", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "transaction_id": { + "type": "string", + "description": "Transaction identifier.", + "example": "TRANSACTION_ID" + }, + "status": { + "type": "string", + "enum": [ + "processing" + ], + "description": "Transfer status.", + "example": "processing" + } + } + } + } + } + }, + "400": { + "description": "Bad Request - Synchronous failure", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "transaction_id": { + "type": "string", + "description": "Transaction identifier.", + "example": "TRANSACTION_ID" + }, + "status": { + "type": "string", + "enum": [ + "failure" + ], + "description": "Transfer status.", + "example": "failure" + }, + "message": { + "type": "string", + "description": "Reason for rejection.", + "example": "Insufficient balance" + } + } + } + } + } + } + }, + "security": [ + { + "BasicAuth": [] + } + ] + } + }, + "/webhook/marketplace/transfers/{publisher_id}": { + "servers": [ + { + "url": "https://api-retail-media.newtail.com.br", + "description": "VTEX Ads server." + } + ], + "post": { + "tags": [ + "Marketplace Integration - Credits management" + ], + "summary": "Transfer status webhook", + "description": "Webhook to notify VTEX Ads about the final status of a transfer. The marketplace must consume this webhook to update transfer status.\r\n\r\n## Authentication\r\n\r\nThis endpoint requires `x-api-key` and `x-secret-key` headers for authentication.\r\n\r\n## Retry Logic\r\n\r\nIn case of webhook call failure, the marketplace should retry the request.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "x-api-key", + "in": "header", + "description": "API key for authentication.", + "required": true, + "schema": { + "type": "string", + "example": "your-api-key" + } + }, + { + "name": "x-secret-key", + "in": "header", + "description": "Secret key for authentication.", + "required": true, + "schema": { + "type": "string", + "example": "your-secret-key" + } + }, + { + "name": "publisher_id", + "in": "path", + "description": "Publisher identifier.", + "required": true, + "schema": { + "type": "string", + "example": "PUBLISHER_ID" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "required": [ + "transaction_id", + "status" + ], + "properties": { + "transaction_id": { + "type": "string", + "description": "Transaction identifier.", + "example": "TRANSACTION_ID" + }, + "status": { + "type": "string", + "enum": [ + "success" + ], + "description": "Transfer status.", + "example": "success" + } + } + }, + { + "type": "object", + "required": [ + "transaction_id", + "status", + "message" + ], + "properties": { + "transaction_id": { + "type": "string", + "description": "Transaction identifier.", + "example": "TRANSACTION_ID" + }, + "status": { + "type": "string", + "enum": [ + "failure" + ], + "description": "Transfer status.", + "example": "failure" + }, + "message": { + "type": "string", + "description": "Problem description.", + "example": "Transfer failed due to insufficient funds" + } + } + } + ] + }, + "examples": { + "success": { + "summary": "Success notification", + "value": { + "transaction_id": "TRANSACTION_ID", + "status": "success" + } + }, + "failure": { + "summary": "Failure notification", + "value": { + "transaction_id": "TRANSACTION_ID", + "status": "failure", + "message": "Transfer failed due to insufficient funds" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content - Webhook successfully processed" + } + } + } + }, + "/api/v1/sso/marketplace": { + "servers": [ + { + "url": "https://api-retail-media.newtail.com.br", + "description": "VTEX Ads server." + } + ], + "post": { + "tags": [ + "Marketplace Integration - SSO Authentication" + ], + "summary": "Request SSO redirect URL", + "description": "Generate a single sign-on redirect URL that allows users to switch between environments without having to log in again. The purpose of Single Sign On is to enable seamless user authentication across marketplace and VTEX Ads environments.\r\n\r\n## Usage Flow\r\n\r\n1. **Request redirect URL**: Call this endpoint with seller and user information\r\n2. **User redirection**: Redirect the user to the returned `url_redirect`\r\n3. **Automatic login**: The user will be automatically logged into VTEX Ads platform\r\n\r\n>ℹ️ For more information about SSO implementation, see [VTEX Ads Single Sign On (SSO)](https://developers.vtex.com/docs/guides/vtex-ads-single-sign-on-sso).\r\n\r\n## Authentication\r\n\r\nThis endpoint uses `x-api-key` and `x-app-id` headers for authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Content-Type" + }, + { + "$ref": "#/components/parameters/Accept" + } + ], + + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "seller_id", + "seller_name", + "user_email", + "user_name" + ], + "properties": { + "seller_id": { + "type": "string", + "description": "Unique identifier of the advertiser/seller.", + "example": "1" + }, + "seller_name": { + "type": "string", + "description": "Name of the advertiser/seller.", + "example": "Store Example" + }, + "user_email": { + "type": "string", + "format": "email", + "description": "User email address.", + "example": "example@example.com.br" + }, + "user_name": { + "type": "string", + "description": "User name.", + "example": "User Example" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Success - SSO redirect URL generated successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "url_redirect": { + "type": "string", + "format": "uri", + "description": "The redirect URL where the user should be sent to complete SSO authentication. Once redirected, the user will be logged into the VTEX Ads platform without requiring additional login steps.", + "example": "https://app.newtail.com.br/login/marketplace?token=xxxxx" + } + }, + "required": ["url_redirect"] + } + } + } + }, + "400": { + "description": "Bad Request - Validation error in request parameters", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Error message describing the validation issue.", + "example": "ValidationError" + }, + "errors": { + "type": "array", + "description": "List of specific validation errors.", + "items": { + "type": "string", + "description": "Specific validation error message." + } + } + } + } + } + } + }, + "500": { + "description": "Internal Server Error - Unexpected error occurred while processing the request", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Error message describing the internal server error.", + "example": "InternalServerError" + } + } + } + } + } + } + } + } + }, + "/users/{user_id}": { + "servers": [ + { + "url": "{marketplaceEndpoint}", + "description": "External marketplace server endpoint. VTEX Ads will call this endpoint on the marketplace's infrastructure to query user information." + } + ], + "get": { + "tags": [ + "Marketplace Integration - SSO Authentication" + ], + "summary": "Get user information", + "description": "Query user information by user ID for SSO authentication purposes.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "user_id", + "in": "path", + "description": "User ID in the marketplace.", + "required": true, + "schema": { + "type": "string", + "example": "user123" + } + }, + { + "name": "seller_id", + "in": "query", + "description": "Seller identifier.", + "required": true, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "publisher_id", + "in": "query", + "description": "Publisher identifier.", + "required": true, + "schema": { + "type": "string", + "example": "pub-456" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "User name.", + "example": "John Doe" + }, + "email": { + "type": "string", + "description": "User email address.", + "example": "john.doe@example.com" + } + } + } + } + } + } + }, + "security": [ + { + "BasicAuth": [] + } + ] + } + }, + "/sellers/{seller_id}": { + "servers": [ + { + "url": "{marketplaceEndpoint}", + "description": "External marketplace server endpoint. VTEX Ads will call this endpoint on the marketplace's infrastructure to query seller information." + } + ], + "get": { + "tags": [ + "Marketplace Integration - SSO Authentication" + ], + "summary": "Get seller information", + "description": "Query seller information by seller ID for SSO authentication purposes.\r\n\r\n>ℹ️ This endpoint must be implemented by the marketplace. For more information, see [Integrating VTEX Ads with external marketplaces](https://developers.vtex.com/docs/guides/integrating-vtex-ads-with-external-marketplaces).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "seller_id", + "in": "path", + "description": "Seller ID in the marketplace.", + "required": true, + "schema": { + "type": "string", + "example": "seller123" + } + }, + { + "name": "publisher_id", + "in": "query", + "description": "Publisher identifier.", + "required": true, + "schema": { + "type": "string", + "example": "pub-456" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Seller name.", + "example": "ACME Corp" + }, + "cnpj": { + "type": "string", + "description": "Brazilian tax ID (CNPJ).", + "example": "12345678000190" + } + } + } + } + } + } + }, + "security": [ + { + "BasicAuth": [] + } + ] + } + }, + "/report/v2/advertisers": { + "servers": [ + { + "url": "https://api-retail-media.newtail.com.br", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Reports" + ], + "summary": "Export advertisers report", + "description": "Export information from all advertisers associated with a publisher account. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ Only available in publisher view. For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication. Not all users will have access to all available reports.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "start_date", + "in": "query", + "description": "Metrics start date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "end_date", + "in": "query", + "description": "Metrics end date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "account_info", + "in": "query", + "description": "If true, includes detailed account information in the result.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "page", + "in": "query", + "description": "Page number of results.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 1 + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 100 + } + }, + { + "name": "count", + "in": "query", + "description": "If true, returns the total number of available records.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "download", + "in": "query", + "description": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Success - Advertisers report data retrieved successfully", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "List of advertiser data with metrics (when download=false).", + "items": { + "type": "object", + "description": "Advertiser metrics data." + } + } + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "schema": { + "type": "string", + "format": "binary", + "description": "XLSX file buffer for download (when download=true)." + } + } + } + } + } + } + }, + "/report/v2/publishers": { + "servers": [ + { + "url": "https://api-retail-media.newtail.com.br", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Reports" + ], + "summary": "Export publishers report", + "description": "Export publisher information with performance metrics. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ Only available in advertiser view. For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "start_date", + "in": "query", + "description": "Metrics start date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "end_date", + "in": "query", + "description": "Metrics end date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "publisher_name", + "in": "query", + "description": "Filters results by publisher name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "account_info", + "in": "query", + "description": "If true, includes detailed account information in the result.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "page", + "in": "query", + "description": "Page number of results.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 1 + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 100 + } + }, + { + "name": "count", + "in": "query", + "description": "If true, returns the total number of available records.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "order_by", + "in": "query", + "description": "Defines the field for sorting results.", + "required": false, + "schema": { + "type": "string", + "enum": ["name", "balance", "total_daily_budget", "total_campaigns", "impressions", "clicks", "ctr", "total_spent", "conversions", "conversion_rate", "income", "roas"] + } + }, + { + "name": "order_direction", + "in": "query", + "description": "Defines the sorting direction.", + "required": false, + "schema": { + "type": "string", + "enum": ["asc", "desc"] + } + }, + { + "name": "download", + "in": "query", + "description": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Success - Publishers report data retrieved successfully", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "List of publisher data with metrics (when download=false).", + "items": { + "type": "object", + "description": "Publisher metrics data." + } + } + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "schema": { + "type": "string", + "format": "binary", + "description": "XLSX file buffer for download (when download=true)." + } + } + } + } + } + } + }, + "/report/network/publishers": { + "servers": [ + { + "url": "https://api-retail-media.newtail.com.br", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Reports" + ], + "summary": "Export network publishers report", + "description": "Export information about publishers associated with a Network type Publisher account. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ Only publishers operating in Network format have permission to access this report. For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "start_date", + "in": "query", + "description": "Metrics start date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "end_date", + "in": "query", + "description": "Metrics end date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "publisher_name", + "in": "query", + "description": "Filters results by publisher name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "account_info", + "in": "query", + "description": "If true, includes detailed account information in the result.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "page", + "in": "query", + "description": "Page number of results.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 1 + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 100 + } + }, + { + "name": "count", + "in": "query", + "description": "If true, returns the total number of available records.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "order_by", + "in": "query", + "description": "Defines the field for sorting results.", + "required": false, + "schema": { + "type": "string", + "enum": ["name", "impressions", "clicks", "ctr", "conversions", "conversion_rate", "income", "roas", "requests"] + } + }, + { + "name": "order_direction", + "in": "query", + "description": "Defines the sorting direction.", + "required": false, + "schema": { + "type": "string", + "enum": ["asc", "desc"] + } + }, + { + "name": "download", + "in": "query", + "description": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Success - Network publishers report data retrieved successfully", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "List of network publisher data with metrics (when download=false).", + "items": { + "type": "object", + "description": "Network publisher metrics data." + } + } + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "schema": { + "type": "string", + "format": "binary", + "description": "XLSX file buffer for download (when download=true)." + } + } + } + } + } + } + }, + "/campaign/v2": { + "servers": [ + { + "url": "https://api-retail-media.newtail.com.br", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Reports" + ], + "summary": "Export campaigns report", + "description": "Export all available campaigns with performance metrics, applying filters as needed. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "start_date", + "in": "query", + "description": "Metrics start date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "end_date", + "in": "query", + "description": "Metrics end date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "status", + "in": "query", + "description": "Filters by campaign status.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "advertiser_id", + "in": "query", + "description": "Filters campaigns by advertiser ID.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "ad_type", + "in": "query", + "description": "Filters by ad type.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "name", + "in": "query", + "description": "Searches campaigns by name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "account_info", + "in": "query", + "description": "If true, includes detailed account information in the result.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "page", + "in": "query", + "description": "Page number of results.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 1 + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 100 + } + }, + { + "name": "count", + "in": "query", + "description": "If true, returns the total number of available records.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "order_by", + "in": "query", + "description": "Defines the field for sorting results.", + "required": false, + "schema": { + "type": "string", + "enum": ["name", "impressions", "clicks", "ctr", "conversions", "conversion_rate", "income", "roas", "created_at", "start_at", "daily_budget", "ad_type", "advertiser_name", "status"] + } + }, + { + "name": "order_direction", + "in": "query", + "description": "Defines the sorting direction.", + "required": false, + "schema": { + "type": "string", + "enum": ["asc", "desc"] + } + }, + { + "name": "download", + "in": "query", + "description": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Success - Campaigns report data retrieved successfully", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "List of campaign data with metrics (when download=false).", + "items": { + "type": "object", + "description": "Campaign metrics data." + } + } + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "schema": { + "type": "string", + "format": "binary", + "description": "XLSX file buffer for download (when download=true)." + } + } + } + } + } + } + }, + "/ad/results/v2": { + "servers": [ + { + "url": "https://api-retail-media.newtail.com.br", + "description": "VTEX Ads server." + } + ], + "get": { + "tags": [ + "Reports" + ], + "summary": "Export ads report", + "description": "Export all available ads with performance metrics, applying filters as needed. Data is returned in JSON format by default, but can be exported as XLSX by adding the `download=true` parameter.\r\n\r\n>ℹ️ For more information about report export functionality, see [Exporting ads reports](https://developers.vtex.com/docs/guides/exporting-ads-reports).\r\n\r\n>⚠️ Export availability may be restricted based on the account type associated with the authentication.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [License Manager resources](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).", + "parameters": [ + { + "$ref": "#/components/parameters/Accept" + }, + { + "name": "start_date", + "in": "query", + "description": "Metrics start date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "end_date", + "in": "query", + "description": "Metrics end date in YYYY-MM-DD format.", + "required": true, + "schema": { + "type": "string", + "format": "date", + "example": "2025-01-01" + } + }, + { + "name": "campaign_name", + "in": "query", + "description": "Filters ads by campaign name.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "campaign_id", + "in": "query", + "description": "Filters ads by campaign ID.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "advertiser_id", + "in": "query", + "description": "Filters ads by advertiser ID.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "product_sku", + "in": "query", + "description": "Filters ads by product SKU.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "ad_status", + "in": "query", + "description": "Filters ads by status.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "ad_type", + "in": "query", + "description": "Filters by ad type.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "targeting_type", + "in": "query", + "description": "Filters by targeting type.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "show_inactive", + "in": "query", + "description": "If true, includes paused ads.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "account_info", + "in": "query", + "description": "If true, includes detailed account information in the result.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "page", + "in": "query", + "description": "Page number of results.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 1 + } + }, + { + "name": "quantity", + "in": "query", + "description": "Number of items per page.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1, + "default": 100 + } + }, + { + "name": "count", + "in": "query", + "description": "If true, returns the total number of available records.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "order_by", + "in": "query", + "description": "Defines the field for sorting results.", + "required": false, + "schema": { + "type": "string", + "enum": ["ad_type", "ad_status", "impressions", "conversion_rate", "ctr", "income", "total_spent", "roas", "conversions", "total_conversions_item_quantity"] + } + }, + { + "name": "order_direction", + "in": "query", + "description": "Defines the sorting direction.", + "required": false, + "schema": { + "type": "string", + "enum": ["asc", "desc"] + } + }, + { + "name": "download", + "in": "query", + "description": "If true, returns an XLSX file buffer ready for download instead of JSON.", + "required": false, + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "200": { + "description": "Success - Ads report data retrieved successfully", + "content": { + "application/json": { + "schema": { + "type": "array", + "description": "List of ad data with metrics (when download=false).", + "items": { + "type": "object", + "description": "Ad metrics data." + } + } + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "schema": { + "type": "string", + "format": "binary", + "description": "XLSX file buffer for download (when download=true)." + } + } + } + } + } + } + } + }, + "components": { + "securitySchemes": { + "X-App-Id": { + "name": "X-App-Id", + "type": "apiKey", + "in": "header", + "description": "Publisher App ID for authorization." + }, + "X-Api-Key": { + "name": "X-Api-Key", + "type": "apiKey", + "in": "header", + "description": "API Key for authentication." + }, + "BasicAuth": { + "type": "http", + "scheme": "basic", + "description": "Basic Authentication for marketplace endpoints. VTEX Ads will use this method when calling marketplace-hosted endpoints." + } + }, + "parameters": { + "Content-Type": { + "name": "Content-Type", + "in": "header", + "description": "Type of the content being sent.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + }, + "Accept": { + "name": "Accept", + "in": "header", + "description": "HTTP Client Negotiation Accept Header. Indicates the types of responses the client can understand.", + "required": true, + "style": "simple", + "schema": { + "type": "string", + "example": "application/json" + } + } + } + }, + "security": [ { "X-App-Id": [], "X-Api-Key": [] @@ -1699,6 +4963,30 @@ }, { "name": "Ads" + }, + { + "name": "Reports" + }, + { + "name": "Marketplace integration - Catalog" + }, + { + "name": "Marketplace Integration - Advertiser management" + }, + { + "name": "Marketplace Integration - Campaign management" + }, + { + "name": "Marketplace Integration - Metrics" + }, + { + "name": "Marketplace Integration - Credits management" + }, + { + "name": "Marketplace Integration - Credits payments" + }, + { + "name": "Marketplace Integration - SSO Authentication" } ] } \ No newline at end of file