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:
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:
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:
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:
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.'