openapi: 3.0.0 info: title: VTex Anti-fraud Provider Account Matched Offers API description: ">ℹ️ Onboarding guide\r\n>\r\n> Check the new [Payments onboarding guide](https://developers.vtex.com/docs/guides/payments-overview). We created this guide to improve the onboarding experience for developers at VTEX. It assembles all documentation on our Developer Portal about Payments and is organized by focusing on the developer's journey.\r\n\r\nThe Anti-fraud Provider Protocol is a set of definitions to help you integrate your anti-fraud service API into VTEX platform.\r\n\r\nTo achieve this, you need to implement a web API (REST) following the specifications described in this documentation.\r\n\r\n>⚠️ You can also access our [template on GitHub](https://github.com/vtex-apps/antifraud-provider-example) to help you quickly develop your anti-fraud connector using the Anti-fraud Provider Protocol and VTEX IO.\r\n\r\nTo learn more about the Anti-fraud Provider Protocol, check our [developer guide](https://developers.vtex.com/docs/guides/how-the-integration-protocol-between-vtex-and-antifraud-companies-works).\r\n\r\n## Anti-fraud Provider API Index\r\n\r\n### Anti-fraud Flow\r\n\r\n- `POST` [Send Anti-fraud Pre-Analysis Data (optional)](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#post-/pre-analysis)\r\n- `POST` [Send Anti-fraud Data](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#post-/transactions)\r\n- `PUT` [Update Anti-fraud Transactions (optional)](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#put-/transactions/-transactionId-)\r\n- `GET` [List Anti-fraud Provider Manifest](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#get-/manifest)\r\n- `GET` [Get Anti-fraud Status](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#get-/transactions/-transactions.id-)\r\n- `DELETE` [Stop Anti-fraud Analysis (optional)](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#delete-/transactions/-transactions.Id-)\r\n\r\n### OAuth Flow\r\n\r\n1. `POST` [Retrieve Token](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#post-/authorization/token)\r\n2. `GET` [Redirect](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#get-/redirect)\r\n3. `GET` [Return to VTEX](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#get-/authorizationCode)\r\n4. `GET` [Get Credentials](https://developers.vtex.com/docs/api-reference/antifraud-provider-protocol#get-/authorization/credentials)" version: '1.0' servers: - url: https://{providerApiEndpoint} description: Anti-fraud provider endpoint URL. variables: providerApiEndpoint: description: Anti-fraud provider endpoint URL. default: '{providerApiEndpoint}' tags: - name: Matched Offers paths: /offer-manager/pvt/offers: get: tags: - Matched Offers summary: VTex Get Matched Offers List description: "Offers are seller's products and SKUs that were sent to the marketplace, and already have their price and inventory level configured. \n\n This endpoint retrieves the available offers in a marketplace. It differs from the Get Suggestions endpoints, since it retrieves products that were already matched by the marketplace, and are currently in its catalog. \n\nIt is possible to filter the search through the following parameters: \n\n- rows \n- sort \n\n- start \n\n- fq\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).\r\n\r\nTo learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication-overview#machine-authentication).\r\n\r\n>❗ To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations." operationId: Getofferslist parameters: - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/rows' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/fq' - $ref: '#/components/parameters/accountName' - $ref: '#/components/parameters/contentType' - $ref: '#/components/parameters/environment' - $ref: '#/components/parameters/accept' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/responseGetMatchedOffersList' example: - LastModified: '2021-05-06T21:37:24.262529' ProductId: '941947' CategoryId: 1563 BrandId: 2004291 ProductName: Produto Teste 04 - Preto - 40 Skus: - SkuId: '1070268' EanId: null RefId: null NameComplete: Produto Teste 04 - Preto - 40 Cor:Preto Name: Cor:Preto IsActive: true MainImage: ImageId: '53878805' ImageLabel: null ImageTag: image-8b4364782e664d76a6ebc8702008e478 ImagePath: ~/arquivos/ids/53878805-#width#-#height#/image-8b4364782e664d76a6ebc8702008e478.jpg IsMain: true IsZoomSize: true ImageText: image-8b4364782e664d76a6ebc8702008e478 LastModified: '2021-04-06T03:01:30.747' Offers: - SellerId: '1' SellerSkuId: '1070268' OffersPerSalesChannel: - SaleChannel: 1 Price: 0 ListPrice: 0 PriceWithoutDiscount: 0 AvailableQuantity: 0 AvailableSalesChannels: null - SellerId: madesacms SellerSkuId: '3298' OffersPerSalesChannel: - SaleChannel: 0 Price: 1200 ListPrice: 1200 PriceWithoutDiscount: 1200 AvailableQuantity: 10000000 AvailableSalesChannels: null deprecated: false /offer-manager/pvt/product/{productId}/sku/{skuId}: get: tags: - Matched Offers summary: VTex Get Matched Offer's Data by SKU ID description: "Offers are seller products and SKUs that were sent to the marketplace, and already have their price and inventory level configured. \n\nThis endpoint retrieves the available offers for a speciic SKU ID in the marketplace's catalog. It differs from the Get Suggestions endpoints, since it retrieves products that were already matched by the marketplace operator, and are currently active in its catalog. \n\nThe call returns a list of offers for that ID, that contain the following data: \n\n- Seller that sells the SKU \n\n- Correspondent SKU ID \n\n- SKU's price value \n\n- Inventory level \n\n- Sales channel (or [trade policy](https://help.vtex.com/en/tutorial/como-funciona-uma-politica-comercial--6Xef8PZiFm40kg2STrMkMV#master-data)) that it is available at." operationId: GetSKUoffers parameters: - $ref: '#/components/parameters/accountName' - $ref: '#/components/parameters/environment' - $ref: '#/components/parameters/contentType' - $ref: '#/components/parameters/accept' - $ref: '#/components/parameters/productId' - $ref: '#/components/parameters/skuId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/responseGetMatchedOffersDataBySKU' example: - productId: '1561208' skuId: '1559161' nameComplete: Blusa Cardigan Manga Longa Vestem - Feminina - CINZA G mainImage: imagePath: ~/arquivos/ids/8567753-#width#-#height#/image-05b40d3167b5b7ed42285124f6862f12.jpg sellersOffers: - sellerId: '1' sellerSkuId: '1559161' salesChannelOffer: - salesChannelId: '1' salesChannelName: Principal price: 49.99 listPrice: 59.99 priceWithoutDiscount: 49.99 availableQuantity: 8 - salesChannelId: '2' salesChannelName: Online Store price: 47.99 listPrice: 59.99 priceWithoutDiscount: 47.99 availableQuantity: 12 deprecated: false /offer-manager/pvt/product/{productId}: get: tags: - Matched Offers summary: VTex Get Matched Offer's Data by Product ID description: "Offers are seller products and SKUs that were sent to the marketplace, and already have their price and inventory level configured. \n\nThis endpoint retrieves the available offers for a speciic Product ID in the marketplace's catalog. It differs from the Get Suggestions endpoints, since it retrieves products that were already matched by the marketplace operator, and are currently active in its catalog. \n\nThe call returns a list of offers for that ID, that contain the following data: \n\n- Seller that sells the SKU \n\n- Correspondent SKU ID \n\n- SKU's price value \n\n- Inventory level \n\n- Sales channel (or [trade policy](https://help.vtex.com/en/tutorial/como-funciona-uma-politica-comercial--6Xef8PZiFm40kg2STrMkMV#master-data)) that it is available at.\r\n\r\n## Permissions\r\n\r\nThis endpoint does not require [permissions](https://help.vtex.com/en/tutorial/license-manager-resources--3q6ztrC8YynQf6rdc6euk3).\r\n\r\nTo learn more about machine authentication at VTEX, see [Authentication overview](https://developers.vtex.com/docs/guides/authentication-overview#machine-authentication).\r\n\r\n>❗ To prevent integrations from having excessive permissions, consider the [best practices for managing app keys](https://help.vtex.com/en/tutorial/best-practices-application-keys--7b6nD1VMHa49aI5brlOvJm) when assigning License Manager roles to integrations." operationId: GetProductoffers parameters: - $ref: '#/components/parameters/accountName' - $ref: '#/components/parameters/environment' - $ref: '#/components/parameters/contentType' - $ref: '#/components/parameters/accept' - $ref: '#/components/parameters/productId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/responseGetMatchedOffersDataByProductId' example: - productId: '1561208' skuId: '1559161' nameComplete: Blusa Cardigan Manga Longa Vestem - Feminina - CINZA G mainImage: imagePath: ~/arquivos/ids/8567753-#width#-#height#/image-05b40d3167b5b7ed42285124f6862f12.jpg sellersOffers: - sellerId: '1' sellerSkuId: '1559161' salesChannelOffer: salesChannelId: '1' salesChannelName: Principal price: 0 listPrice: 0 priceWithoutDiscount: 0 availableQuantity: 0 - productId: '1561208' skuId: '1559163' nameComplete: Blusa Cardigan Manga Longa Vestem - Feminina - CINZA PP mainImage: imagePath: ~/arquivos/ids/8567753-#width#-#height#/image-05b40d3167b5b7ed42285124f6862f12.jpg sellersOffers: - sellerId: '1' sellerSkuId: '1559161' salesChannelOffer: salesChannelId: '1' salesChannelName: Principal price: 0 listPrice: 0 priceWithoutDiscount: 0 availableQuantity: 0 deprecated: false components: parameters: accountName: name: accountName in: path required: true description: Name of the VTEX account that belongs to the marketplace. The notification will be posted into this account. schema: type: string example: apiexamples 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 default: application/json contentType: name: Content-Type in: header description: Type of the content being sent. required: true style: simple schema: type: string default: application/json skuId: name: skuId in: path description: A string that identifies the seller's SKU that suffered the change. This is the ID that the marketplace will use for all references to this SKU, such as price and inventory notifications. required: true style: simple schema: type: string example: '1234' fq: name: fq in: query description: "This filter query can be used to filter offers by the criteria described below. It should be filled in by following the format: `fq={{criteriaName}}:{{criteriaValue}}`. \n\n- **productId:** integer of the product ID \n\n- **productName:** string of the product's name \n\n- **skuId:** integer of the SKU ID \n\n- **eanId:** string of the EAN ID \n\n- **refId:** string of the Ref ID \n\n- **categoryId:** integer of the category ID \n\n- **brandId:** integer of the brand ID \n\n- **sellerId:** string of the seller ID \n\n- **sc:** integer of the sales channel's ID (trade policy in VTEX) \n\nEx: skuId:172 \n\nEx: categoryId:13 \n\nEx. productName:Product example-123" required: false style: form explode: true schema: type: string example: skuId:172 start: name: start in: query description: Number corresponding to the row from which the offer list will begin, used for pagination. Filters the list of offers by retrieving the offers starting from the row defined. The default value is 0, if the param is not included in the call. required: false style: form explode: true schema: type: integer default: 0 sort: name: sort in: query description: "Criteria used to sort the list of offers. For sorting values in ascending order, use `asc`, while for descending order, use `desc`. To fill in the field, insert the sorting criteria, followed by 'asc', or 'desc', separated by a comma. You can sort by the following criteria: \n\n- **price:** sorts offers by price. *Ascending* goes from lowest to highest price, while *Descending* goes from highest to lowest price. \n\n- **name:** sorts offers by *productName*, in alphabetical order. *Ascending* goes from *A* to *Z*, while *Descending* goes from *Z* to *A*. \n\n- **availability:** availability in the sales channel (sc). The default value is 1. \n\nEx. sort=availability,desc \n\nEx. sort=name,asc \n\nEx. price,desc" required: false style: form explode: true schema: type: string example: availability,desc productId: name: productId in: path description: A string that identifies the seller's product. This is the ID that the marketplace will use for all references to this product, such as price and inventory notifications. required: true style: simple schema: type: string example: '123456' rows: name: rows in: query description: Number of rows included in the response. Each row corresponds to a single offer. The default amount of rows in the response is 1, and the maximum amount is 50. To have more than one offer listed in the response, please add the `rows` parameter with a number greater than 1. required: false style: form explode: true schema: type: integer example: 20 environment: name: environment in: path required: true description: Environment to use. Used as part of the URL. schema: type: string default: vtexcommercestable schemas: Offer: title: Offer required: - SellerId - SellerSkuId - OffersPerSalesChannel - AvailableSalesChannels type: object properties: SellerId: type: string description: ID of the seller in the marketplace. This ID must be created by the marketplace. default: '1' SellerSkuId: type: string description: A string that identifies the SKU in the seller. This is the ID that the marketplace will use for future references to this SKU, such as price and inventory notifications. default: '1070268' OffersPerSalesChannel: type: array items: $ref: '#/components/schemas/OffersPerSalesChannel' description: Each element in the array corresponds to an offer in a specific sales channel. AvailableSalesChannels: type: string nullable: true description: The sales channel (or [trade policy](https://help.vtex.com/en/tutorial/como-funciona-uma-politica-comercial--6Xef8PZiFm40kg2STrMkMV#master-data)) ID in which the SKU is available. default: '1' example: SellerId: '1' SellerSkuId: '1070268' OffersPerSalesChannel: - SaleChannel: 1 Price: 0 ListPrice: 0 PriceWithoutDiscount: 0 AvailableQuantity: 0 AvailableSalesChannels: null MainImage: title: MainImage required: - ImageId - ImageLabel - ImageTag - ImagePath - IsMain - IsZoomSize - ImageText - LastModified type: object properties: ImageId: type: string description: Code identifying the image's file. default: '53878805' ImageLabel: type: string nullable: true description: Image's label. default: Image 1 ImageTag: type: string description: HTML tag for the selected image. default: Image name and description ImagePath: type: string description: Path for the image's file. default: ~/archives/ids/155411-#width#-#height#/Webp.net-resizeimage.jpg IsMain: type: boolean description: Whether the image is the main one or not. default: true IsZoomSize: type: boolean description: If zoom can be applied to the image. default: true ImageText: type: string description: Alt text for the image. default: Image name and description LastModified: type: string description: Date of the last changed made to the offer. default: '2021-05-06T21:37:24.262529' example: ImageId: '53878805' ImageLabel: null ImageTag: image-8b4364782e664d76a6ebc8702008e478 ImagePath: ~/arquivos/ids/53878805-#width#-#height#/image-8b4364782e664d76a6ebc8702008e478.jpg IsMain: true IsZoomSize: true ImageText: image-8b4364782e664d76a6ebc8702008e478 LastModified: '2021-04-06T03:01:30.747' responseGetMatchedOffersList: type: array description: Response with the list of offers available on the Marketplace. items: type: object description: Array of SKUs in the offer. properties: LastModified: type: string description: Last date the offer was modified. example: '2021-05-06T21:37:24.262529' ProductId: type: string description: A string that identifies the seller's product. This is the ID that the marketplace will use for all references to this product. example: '941947' CategoryId: type: integer description: Offer's Category ID that the product belongs to, configured in the Catalog. It should be the marketplace's category chosen for the offer to be matched with. example: 1563 BrandId: type: integer description: Offer's brand ID that the product belongs to, configured in the Catalog. It should be the marketplace's brand chosen for the offer to be matched with. example: 2004291 ProductName: type: string description: Name of the offer's product. example: Name of the Product - 123 Skus: type: array items: $ref: '#/components/schemas/Sku2' responseGetMatchedOffersDataBySKU: description: Array of matched offers data by SKU. type: array items: type: object description: Schema for individual offer data. properties: productId: type: string description: The unique identifier for the product. example: '1561208' skuId: type: string description: The unique identifier for the product SKU. example: '1559161' nameComplete: type: string description: The complete name of the product. example: Blusa Cardigan Manga Longa Vestem - Feminina - CINZA G mainImage: type: object description: Schema for the main product image. required: - imagePath properties: imagePath: type: string description: The file path of the main product image. example: ~/arquivos/ids/8567753-#width#-#height#/image-05b40d3167b5b7ed42285124f6862f12.jpg sellersOffers: type: array description: Array of offers from different sellers. items: type: object description: Schema for individual seller offer data. properties: sellerId: type: string description: The unique identifier for the seller. example: '1' sellerSkuId: type: string description: The unique identifier for the seller's SKU. example: '1559161' salesChannelOffer: type: array description: Array of offers on different sales channels from the same seller. items: type: object description: Schema for individual sales channel offer data. properties: salesChannelId: type: string description: The unique identifier for the sales channel. example: '1' salesChannelName: type: string description: The name of the sales channel. example: Principal price: type: number description: The offer price. example: 0 listPrice: type: number description: The list price of the product. example: 0 priceWithoutDiscount: type: number description: The offer price without any discount. example: 0 availableQuantity: type: integer description: The available quantity of the product. example: 8 OffersPerSalesChannel: title: OffersPerSalesChannel required: - SaleChannel - Price - ListPrice - PriceWithoutDiscount - AvailableQuantity type: object properties: SaleChannel: type: integer description: The sales channel (or [trade policy](https://help.vtex.com/en/tutorial/como-funciona-uma-politica-comercial--6Xef8PZiFm40kg2STrMkMV#master-data)) of the SKU. default: 1 Price: type: integer description: SKU's price. default: 1300 ListPrice: type: integer description: SKU's suggested selling price default: 1200 PriceWithoutDiscount: type: integer description: SKU's price without discount applied. default: 1400 AvailableQuantity: type: integer description: Available SKU stock quantity default: 30 example: SaleChannel: 1 Price: 0 ListPrice: 0 PriceWithoutDiscount: 0 AvailableQuantity: 0 responseGetMatchedOffersDataByProductId: type: array description: Array of matched offers data by product ID. items: type: object description: Schema for individual offer data. properties: productId: type: string description: The unique identifier for the product. example: '1561208' skuId: type: string description: The unique identifier for the product SKU. example: '1559161' nameComplete: type: string description: The complete name of the product. example: Blusa Cardigan Manga Longa Vestem - Feminina - CINZA G mainImage: type: object description: Schema for the main product image. required: - imagePath properties: imagePath: type: string description: The file path of the main product image. example: ~/arquivos/ids/8567753-#width#-#height#/image-05b40d3167b5b7ed42285124f6862f12.jpg sellersOffers: type: array description: Array of offers from different sellers. items: type: object description: Schema for individual seller offer data. properties: sellerId: type: string description: The unique identifier for the seller. example: '1' sellerSkuId: type: string description: The unique identifier for the seller's SKU. example: '1559161' salesChannelOffer: type: object description: Schema for the offer data on a specific sales channel. properties: salesChannelId: type: string description: The unique identifier for the sales channel. example: '1' salesChannelName: type: string description: The name of the sales channel. example: Principal price: type: number description: The offer price. example: 0 listPrice: type: number description: The list price of the product. example: 0 priceWithoutDiscount: type: number description: The offer price without any discount. example: 0 availableQuantity: type: integer description: The available quantity of the product. example: 0 Sku2: title: Sku required: - SkuId - EanId - RefId - NameComplete - Name - IsActive - MainImage - Offers type: object properties: SkuId: type: string description: SKU's unique identifier number default: '1070268' EanId: type: string nullable: true description: EAN's unique identifier number default: '768655' RefId: type: string nullable: true description: SKU's Reference ID default: '1234' NameComplete: type: string description: Complete name of the SKU default: 'Name of the Product - 123 Color: Black' Name: type: string description: Summarized name of the SKU default: 'Color: Black' IsActive: type: boolean description: Whether the SKU is active in the sales channel (true), or not (false). default: true MainImage: type: object items: $ref: '#/components/schemas/MainImage' description: Main image's information. Offers: type: array items: $ref: '#/components/schemas/Offer' description: Array with offers example: SkuId: '1070268' EanId: null RefId: null NameComplete: Produto Teste 04 - Preto - 40 Cor:Preto Name: Cor:Preto IsActive: true MainImage: ImageId: '53878805' ImageLabel: null ImageTag: image-8b4364782e664d76a6ebc8702008e478 ImagePath: ~/arquivos/ids/53878805-#width#-#height#/image-8b4364782e664d76a6ebc8702008e478.jpg IsMain: true IsZoomSize: true ImageText: image-8b4364782e664d76a6ebc8702008e478 LastModified: '2021-04-06T03:01:30.747' Offers: - SellerId: '1' SellerSkuId: '1070268' OffersPerSalesChannel: - SaleChannel: 1 Price: 0 ListPrice: 0 PriceWithoutDiscount: 0 AvailableQuantity: 0 AvailableSalesChannels: null - SellerId: madesacms SellerSkuId: '3298' OffersPerSalesChannel: - SaleChannel: 0 Price: 1200 ListPrice: 1200 PriceWithoutDiscount: 1200 AvailableQuantity: 10000000 AvailableSalesChannels: null securitySchemes: VtexIdclientAutCookie: type: apiKey in: header name: VtexIdclientAutCookie description: '[User token](https://developers.vtex.com/docs/guides/api-authentication-using-user-tokens), valid for 24 hours.'