{"files":{"SKILL.md":"---\nname: catalog-api\ndescription: \"Catalog API skill. Use when working with Catalog for api. Covers 208 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Catalog API\nAPI version: 1.0\n\n## Auth\nApiKey X-VTEX-API-AppKey in header | ApiKey X-VTEX-API-AppToken in header | ApiKey VtexIdclientAutCookie in header\n\n## Base URL\nhttps://apiexamples.vtexcommercestable.com.br\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /api/catalog_system/pvt/products/GetProductAndSkuIds -- verify access\n3. POST /api/catalog/pvt/product -- create first product\n\n## Endpoints\n\n208 endpoints across 1 groups. See references/api-spec.lap for full details.\n\n### api\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /api/catalog_system/pvt/products/GetProductAndSkuIds | Get product and SKU IDs |\n| GET | /api/catalog/pvt/product/{productId} | Get product by ID |\n| PUT | /api/catalog/pvt/product/{productId} | Update product |\n| GET | /api/catalog_system/pvt/products/productget/{productId} | Get product and its general context |\n| GET | /api/catalog_system/pvt/products/productgetbyrefid/{refId} | Get product by reference ID |\n| GET | /api/catalog_system/pub/products/variations/{productId} | Get product's SKUs by product ID |\n| GET | /api/addon/pvt/review/GetProductRate/{productId} | Get product review rate by product ID |\n| POST | /api/catalog/pvt/product | Create product with category and brand |\n| GET | /api/catalog_system/pvt/products/{productId}/specification | Get product specifications by product ID |\n| POST | /api/catalog_system/pvt/products/{productId}/specification | Update product specification by product ID |\n| GET | /api/catalog/pvt/product/{productId}/specification | Get product specifications and their information by product ID |\n| POST | /api/catalog/pvt/product/{productId}/specification | Associate product specification |\n| DELETE | /api/catalog/pvt/product/{productId}/specification | Delete all product specifications by product ID |\n| DELETE | /api/catalog/pvt/product/{productId}/specification/{specificationId} | Delete a product specification |\n| PUT | /api/catalog/pvt/product/{productId}/specificationvalue | Associate product specification using specification name and group name |\n| GET | /api/catalog_system/pvt/sku/stockkeepingunitids | List all SKU IDs |\n| GET | /api/catalog_system/pvt/sku/stockkeepingunitbyid/{skuId} | Get SKU and context |\n| GET | /api/catalog/pvt/stockkeepingunit | Get SKU by reference ID |\n| POST | /api/catalog/pvt/stockkeepingunit | Create SKU |\n| GET | /api/catalog_system/pvt/sku/stockkeepingunitidbyrefid/{refId} | Get SKU ID by reference ID |\n| GET | /api/catalog_system/pvt/sku/stockkeepingunitbyalternateId/{alternateId} | Get SKU by alternate ID |\n| GET | /api/catalog_system/pvt/sku/stockkeepingunitByProductId/{productId} | Get SKU list by product ID |\n| POST | /api/catalog_system/pub/sku/stockkeepingunitidsbyrefids | Retrieve SKU ID list by reference ID list |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId} | Get SKU |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId} | Update SKU |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/complement | Get SKU complement by SKU ID |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/complement/{complementTypeId} | Get SKU complements by complement type ID |\n| GET | /api/catalog_system/pvt/sku/complements/{parentSkuId}/{type} | Get SKU complements by type |\n| POST | /api/catalog/pvt/skucomplement | Create SKU complement |\n| GET | /api/catalog/pvt/skucomplement/{skuComplementId} | Get SKU complement by SKU complement ID |\n| DELETE | /api/catalog/pvt/skucomplement/{skuComplementId} | Delete SKU complement by SKU complement ID |\n| GET | /api/catalog_system/pvt/sku/stockkeepingunitbyean/{ean} | Get SKU by EAN |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/ean | Get EAN by SKU ID |\n| DELETE | /api/catalog/pvt/stockkeepingunit/{skuId}/ean | Delete all SKU EAN values |\n| POST | /api/catalog/pvt/stockkeepingunit/{skuId}/ean/{ean} | Create SKU EAN |\n| DELETE | /api/catalog/pvt/stockkeepingunit/{skuId}/ean/{ean} | Delete SKU EAN |\n| POST | /api/catalog/pvt/skuattachment | Associate SKU attachment |\n| DELETE | /api/catalog/pvt/skuattachment | Dissociate attachments and SKUs |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/attachment | Get SKU attachments by SKU ID |\n| DELETE | /api/catalog/pvt/skuattachment/{skuAttachmentAssociationId} | Delete SKU attachment by attachment association ID |\n| POST | /api/catalog_system/pvt/sku/associateattachments | Associate attachments to an SKU |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/file | Get SKU files |\n| POST | /api/catalog/pvt/stockkeepingunit/{skuId}/file | Create SKU file |\n| DELETE | /api/catalog/pvt/stockkeepingunit/{skuId}/file | Delete all SKU files |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId} | Update SKU file |\n| DELETE | /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId} | Delete SKU image file |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId}/file/reorder | Reorder SKU files |\n| PUT | /api/catalog/pvt/stockkeepingunit/copy/{skuIdfrom}/{skuIdto}/file | Copy files from an SKU to another SKU |\n| DELETE | /api/catalog/pvt/stockkeepingunit/disassociate/{skuId}/file/{skuFileId} | Disassociate SKU file |\n| GET | /api/catalog/pvt/stockkeepingunitkit | Get SKU kit by SKU ID or parent SKU ID |\n| POST | /api/catalog/pvt/stockkeepingunitkit | Create SKU kit |\n| DELETE | /api/catalog/pvt/stockkeepingunitkit | Delete SKU kit by SKU ID or parent SKU ID |\n| GET | /api/catalog/pvt/stockkeepingunitkit/{kitId} | Get SKU kit |\n| DELETE | /api/catalog/pvt/stockkeepingunitkit/{kitId} | Delete SKU kit by kit ID |\n| GET | /api/catalog_system/pvt/skuseller/{sellerId}/{sellerSkuId} | Get details of a seller's SKU |\n| POST | /api/catalog_system/pvt/skuseller/remove/{sellerId}/{sellerSkuId} | Remove a seller's SKU binding |\n| POST | /api/catalog_system/pvt/skuseller/changenotification/{sellerId}/{sellerSkuId} | Change notification with seller ID and seller SKU ID |\n| POST | /api/catalog_system/pvt/skuseller/changenotification/{skuId} | Change notification with SKU ID |\n| POST | /api/catalog/pvt/stockkeepingunit/{skuId}/attribute | Create SKU attribute |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/attribute | Get all SKU attributes |\n| DELETE | /api/catalog/pvt/stockkeepingunit/{skuId}/attribute | Delete all SKU attributes |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId} | Get SKU attribute by ID |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId} | Update SKU attribute |\n| DELETE | /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId} | Delete SKU attribute |\n| GET | /api/catalog/pvt/skuservice/{skuServiceId} | Get SKU service |\n| PUT | /api/catalog/pvt/skuservice/{skuServiceId} | Update SKU service |\n| DELETE | /api/catalog/pvt/skuservice/{skuServiceId} | Dissociate SKU service |\n| POST | /api/catalog/pvt/skuservice | Associate SKU service |\n| POST | /api/catalog/pvt/skuservicetypeattachment | Associate SKU service attachment |\n| DELETE | /api/catalog/pvt/skuservicetypeattachment | Dissociate attachment by attachment ID or SKU service type ID |\n| DELETE | /api/catalog/pvt/skuservicetypeattachment/{skuServiceTypeAttachmentId} | Dissociate attachment from SKU service type |\n| POST | /api/catalog/pvt/skuservicetype | Create SKU service type |\n| GET | /api/catalog/pvt/skuservicetype/{skuServiceTypeId} | Get SKU service type |\n| PUT | /api/catalog/pvt/skuservicetype/{skuServiceTypeId} | Update SKU service type |\n| DELETE | /api/catalog/pvt/skuservicetype/{skuServiceTypeId} | Delete SKU service type |\n| POST | /api/catalog/pvt/skuservicevalue | Create SKU service value |\n| GET | /api/catalog/pvt/skuservicevalue/{skuServiceValueId} | Get SKU service value |\n| PUT | /api/catalog/pvt/skuservicevalue/{skuServiceValueId} | Update SKU service value |\n| DELETE | /api/catalog/pvt/skuservicevalue/{skuServiceValueId} | Delete SKU service value |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/specification | Get SKU specifications |\n| POST | /api/catalog/pvt/stockkeepingunit/{skuId}/specification | Associate SKU specification |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId}/specification | Update SKU specification |\n| DELETE | /api/catalog/pvt/stockkeepingunit/{skuId}/specification | Delete all SKU specifications |\n| DELETE | /api/catalog/pvt/stockkeepingunit/{skuId}/specification/{specificationId} | Delete SKU specification |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId}/specificationvalue | Associate SKU specification using specification name and group name |\n| POST | /api/catalog/pvt/subcollection/{subCollectionId}/stockkeepingunit | Add SKU to subcollection |\n| DELETE | /api/catalog/pvt/subcollection/{subCollectionId}/stockkeepingunit/{skuId} | Delete SKU from subcollection |\n| GET | /api/catalog_system/pub/category/tree/{categoryLevels} | Get category tree |\n| GET | /api/catalog/pvt/category/{categoryId} | Get category by ID |\n| PUT | /api/catalog/pvt/category/{categoryId} | Update category |\n| POST | /api/catalog/pvt/category | Create category |\n| GET | /api/catalog/pvt/product/{productId}/similarcategory | Get similar categories |\n| POST | /api/catalog/pvt/product/{productId}/similarcategory/{categoryId} | Add similar category |\n| DELETE | /api/catalog/pvt/product/{productId}/similarcategory/{categoryId} | Delete similar category |\n| GET | /api/catalog_system/pub/specification/field/listByCategoryId/{categoryId} | Get specifications by category ID |\n| GET | /api/catalog_system/pub/specification/field/listTreeByCategoryId/{categoryId} | Get specifications tree by category ID |\n| POST | /api/catalog/pvt/subcollection/{subCollectionId}/category | Associate category to subcollection |\n| DELETE | /api/catalog/pvt/subcollection/{subCollectionId}/category/{categoryId} | Delete category from subcollection |\n| GET | /api/catalog_system/pvt/brand/list | Get brand list |\n| GET | /api/catalog_system/pvt/brand/pagedlist | Get paginated brand list |\n| GET | /api/catalog_system/pvt/brand/{brandId} | Get brand by ID |\n| POST | /api/catalog/pvt/brand | Create brand |\n| GET | /api/catalog/pvt/brand/{brandId} | Get brand and context |\n| PUT | /api/catalog/pvt/brand/{brandId} | Update brand |\n| DELETE | /api/catalog/pvt/brand/{brandId} | Delete brand |\n| POST | /api/catalog/pvt/subcollection/{subCollectionId}/brand | Associate brand to subcollection |\n| DELETE | /api/catalog/pvt/subcollection/{subCollectionId}/brand/{brandId} | Delete brand from subcollection |\n| GET | /api/catalog/pvt/attachment/{attachmentid} | Get attachment by ID |\n| PUT | /api/catalog/pvt/attachment/{attachmentid} | Update attachment |\n| DELETE | /api/catalog/pvt/attachment/{attachmentid} | Delete attachment |\n| POST | /api/catalog/pvt/attachment | Create attachment |\n| GET | /api/catalog/pvt/attachments | Get all attachments |\n| GET | /api/catalog/pvt/collection/inactive | Get all inactive collections |\n| POST | /api/catalog/pvt/collection | Create collection |\n| GET | /api/catalog/pvt/collection/stockkeepingunit/importfileexample | Import collection file example |\n| POST | /api/catalog/pvt/collection/{collectionId}/stockkeepingunit/importinsert | Add products to collection by imported file |\n| POST | /api/catalog/pvt/collection/{collectionId}/stockkeepingunit/importexclude | Remove products from collection by imported file |\n| GET | /api/catalog/pvt/collection/{collectionId}/products | Get products from a collection |\n| GET | /api/catalog/pvt/collection/{collectionId} | Get collection by ID |\n| PUT | /api/catalog/pvt/collection/{collectionId} | Update collection |\n| DELETE | /api/catalog/pvt/collection/{collectionId} | Delete collection |\n| GET | /api/catalog/pvt/collection/{collectionId}/subcollection | Get subcollection by collection ID |\n| GET | /api/catalog/pvt/subcollection/{subCollectionId} | Get subcollection by subcollection ID |\n| PUT | /api/catalog/pvt/subcollection/{subCollectionId} | Update subcollection |\n| DELETE | /api/catalog/pvt/subcollection/{subCollectionId} | Delete subcollection |\n| POST | /api/catalog/pvt/subcollection | Create subcollection |\n| POST | /api/catalog/pvt/collection/{collectionId}/position | Reposition SKU on the subcollection |\n| GET | /api/catalog/pvt/subcollection/{subCollectionId}/specificationvalue | Get specification values by subcollection ID |\n| POST | /api/catalog/pvt/subcollection/{subCollectionId}/specificationvalue | Use specification value in subcollection by ID |\n| DELETE | /api/catalog/pvt/subcollection/{subCollectionId}/specificationvalue | Delete specification value from subcollection by ID |\n| GET | /api/catalog/pvt/specification/{specificationId} | Get specification by specification ID |\n| PUT | /api/catalog/pvt/specification/{specificationId} | Update specification |\n| POST | /api/catalog/pvt/specification | Create specification |\n| GET | /api/catalog_system/pub/specification/fieldGet/{fieldId} | Get specification field |\n| POST | /api/catalog_system/pvt/specification/field | Create specification field |\n| PUT | /api/catalog_system/pvt/specification/field | Update specification field |\n| GET | /api/catalog_system/pvt/specification/fieldValue/{fieldValueId} | Get specification field value |\n| GET | /api/catalog_system/pub/specification/fieldvalue/{fieldId} | Get specification values by specification field ID |\n| POST | /api/catalog_system/pvt/specification/fieldValue | Create specification field value |\n| PUT | /api/catalog_system/pvt/specification/fieldValue | Update specification field value |\n| GET | /api/catalog/pvt/specificationvalue/{specificationValueId} | Get specification value |\n| PUT | /api/catalog/pvt/specificationvalue/{specificationValueId} | Update specification value |\n| POST | /api/catalog/pvt/specificationvalue | Create specification value |\n| GET | /api/catalog_system/pvt/specification/groupbycategory/{categoryId} | List specification group by category |\n| GET | /api/catalog_system/pub/specification/groupGet/{groupId} | Get specification group |\n| POST | /api/catalog/pvt/specificationgroup | Create specification group |\n| PUT | /api/catalog/pvt/specificationgroup/{groupId} | Update specification group |\n| GET | /api/catalog/pvt/specification/nonstructured/{Id} | Get non-structured specification by ID |\n| DELETE | /api/catalog/pvt/specification/nonstructured/{Id} | Delete non-structured specification |\n| GET | /api/catalog/pvt/specification/nonstructured | Get non-structured specification by SKU ID |\n| DELETE | /api/catalog/pvt/specification/nonstructured | Delete non-structured specification by SKU ID |\n| GET | /api/catalog_system/pvt/saleschannel/list | Get sales channel list |\n| GET | /api/catalog_system/pub/saleschannel/{salesChannelId} | Get sales channel by ID |\n| GET | /api/catalog_system/pvt/seller/list | Get seller list |\n| GET | /api/catalog_system/pvt/seller/{sellerId} | Get seller by ID |\n| PUT | /api/catalog_system/pvt/seller | Update seller |\n| POST | /api/catalog_system/pvt/seller | Create seller |\n| GET | /api/catalog_system/pvt/sellers/{sellerId} | Get seller by ID |\n| POST | /api/catalog/pvt/supplier | Create supplier |\n| PUT | /api/catalog/pvt/supplier/{supplierId} | Update supplier |\n| DELETE | /api/catalog/pvt/supplier/{supplierId} | Delete supplier |\n| GET | /api/catalog/pvt/product/{productId}/salespolicy | Get sales channel by product ID |\n| POST | /api/catalog/pvt/product/{productId}/salespolicy/{tradepolicyId} | Associate product with sales channel |\n| DELETE | /api/catalog/pvt/product/{productId}/salespolicy/{tradepolicyId} | Remove product from sales channel |\n| GET | /api/catalog_system/pvt/sku/stockkeepingunitidsbysaleschannel | List all SKUs in a sales channel |\n| GET | /api/catalog_system/pvt/products/GetIndexedInfo/{productId} | Get product indexed information |\n| GET | /api/catalog_system/pvt/commercialcondition/list | Get all commercial conditions |\n| GET | /api/catalog_system/pvt/commercialcondition/{commercialConditionId} | Get commercial condition |\n| GET | /api/addon/pvt/giftlist/get/{listId} | Get gift list |\n| GET | /api/catalog/pvt/product/{productId}/language | Get product translation by product ID |\n| PUT | /api/catalog/pvt/product/{productId}/language | Create or update product translation by product ID |\n| GET | /api/catalog/pvt/products/{productId}/specification/{specificationId}/language | Get product specification translation by product ID |\n| PUT | /api/catalog/pvt/products/{productId}/specification/{specificationId}/language | Create or update product specification translation by product ID |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/language | Get SKU translation by SKU ID |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId}/language | Create or update SKU translation by SKU ID |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}/language | Get SKU attribute translation by SKU ID |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}/language | Create or update SKU attribute translation by SKU ID |\n| GET | /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}/language | Get SKU file translation by SKU ID |\n| PUT | /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}/language | Create or update SKU file translation by SKU ID |\n| GET | /api/catalog/pvt/specificationgroup/{specificationGroupId}/language | Get specification group translation |\n| PUT | /api/catalog/pvt/specificationgroup/{specificationGroupId}/language | Create or update specification group translation |\n| GET | /api/catalog/pvt/specification/{specificationId}/language | Get specification translation |\n| PUT | /api/catalog/pvt/specification/{specificationId}/language | Create or update specification translation |\n| GET | /api/catalog/pvt/specificationvalue/{valueId}/language | Get specification value translation |\n| PUT | /api/catalog/pvt/specificationvalue/{valueId}/language | Create or update specification value translation |\n| GET | /api/catalog/pvt/category/{categoryId}/language | Get category translation |\n| PUT | /api/catalog/pvt/category/{categoryId}/language | Create or update category translation |\n| GET | /api/catalog/pvt/brand/{brandId}/language | Get brand translation |\n| PUT | /api/catalog/pvt/brand/{brandId}/language | Create or update brand translation |\n| GET | /api/catalog/pvt/attachment/{attachmentId}/language | Get attachment translation |\n| PUT | /api/catalog/pvt/attachment/{attachmentId}/language | Create or update attachment translation |\n| GET | /api/catalog/pvt/skuservicetype/{skuServiceTypeId}/language | Get SKU service type translation |\n| PUT | /api/catalog/pvt/skuservicetype/{skuServiceTypeId}/language | Create or update SKU service type translation |\n| GET | /api/catalog/pvt/skuservice/{skuserviceId}/language | Get SKU service translation |\n| PUT | /api/catalog/pvt/skuservice/{skuserviceId}/language | Create or update SKU service translation |\n| GET | /api/catalog/pvt/skuservicevalue/{skuServiceValueId}/language | Get SKU service value translation |\n| PUT | /api/catalog/pvt/skuservicevalue/{skuServiceValueId}/language | Create or update SKU service value translation |\n| GET | /api/catalog/pvt/collection/{collectionId}/language | Get collection translation |\n| PUT | /api/catalog/pvt/collection/{collectionId}/language | Create or update collection translation |\n| POST | /api/catalog/pvt/assortment | Create product assortment |\n| GET | /api/catalog/pvt/assortment | Get all product assortments |\n| GET | /api/catalog/pvt/assortment/{productAssortmentID} | Get product assortment by ID |\n| PUT | /api/catalog/pvt/assortment/{productAssortmentID} | Update product assortment |\n| DELETE | /api/catalog/pvt/assortment/{productAssortmentID} | Delete product assortment |\n| POST | /api/catalog/pvt/assortment/{productAssortmentID}/included-collections/{collectionID} | Add included collection to product assortment |\n| DELETE | /api/catalog/pvt/assortment/{productAssortmentID}/included-collections/{collectionID} | Remove included collection from product assortment |\n| POST | /api/catalog/pvt/assortment/{productAssortmentID}/excluded-collections/{collectionID} | Add excluded collection to product assortment |\n| DELETE | /api/catalog/pvt/assortment/{productAssortmentID}/excluded-collections/{collectionID} | Remove excluded collection from product assortment |\n\n## Common Questions\n\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all GetProductAndSkuIds?\" -> GET /api/catalog_system/pvt/products/GetProductAndSkuIds\n- \"Get product details?\" -> GET /api/catalog/pvt/product/{productId}\n- \"Update a product?\" -> PUT /api/catalog/pvt/product/{productId}\n- \"Get productget details?\" -> GET /api/catalog_system/pvt/products/productget/{productId}\n- \"Get productgetbyrefid details?\" -> GET /api/catalog_system/pvt/products/productgetbyrefid/{refId}\n- \"Get variation details?\" -> GET /api/catalog_system/pub/products/variations/{productId}\n- \"Get GetProductRate details?\" -> GET /api/addon/pvt/review/GetProductRate/{productId}\n- \"Create a product?\" -> POST /api/catalog/pvt/product\n- \"List all specification?\" -> GET /api/catalog_system/pvt/products/{productId}/specification\n- \"Create a specification?\" -> POST /api/catalog_system/pvt/products/{productId}/specification\n- \"List all specification?\" -> GET /api/catalog/pvt/product/{productId}/specification\n- \"Create a specification?\" -> POST /api/catalog/pvt/product/{productId}/specification\n- \"Delete a specification?\" -> DELETE /api/catalog/pvt/product/{productId}/specification/{specificationId}\n- \"List all stockkeepingunitids?\" -> GET /api/catalog_system/pvt/sku/stockkeepingunitids\n- \"Get stockkeepingunitbyid details?\" -> GET /api/catalog_system/pvt/sku/stockkeepingunitbyid/{skuId}\n- \"List all stockkeepingunit?\" -> GET /api/catalog/pvt/stockkeepingunit\n- \"Create a stockkeepingunit?\" -> POST /api/catalog/pvt/stockkeepingunit\n- \"Get stockkeepingunitidbyrefid details?\" -> GET /api/catalog_system/pvt/sku/stockkeepingunitidbyrefid/{refId}\n- \"Get stockkeepingunitbyalternateId details?\" -> GET /api/catalog_system/pvt/sku/stockkeepingunitbyalternateId/{alternateId}\n- \"Get stockkeepingunitByProductId details?\" -> GET /api/catalog_system/pvt/sku/stockkeepingunitByProductId/{productId}\n- \"Create a stockkeepingunitidsbyrefid?\" -> POST /api/catalog_system/pub/sku/stockkeepingunitidsbyrefids\n- \"Get stockkeepingunit details?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}\n- \"Update a stockkeepingunit?\" -> PUT /api/catalog/pvt/stockkeepingunit/{skuId}\n- \"List all complement?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/complement\n- \"Get complement details?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/complement/{complementTypeId}\n- \"Get complement details?\" -> GET /api/catalog_system/pvt/sku/complements/{parentSkuId}/{type}\n- \"Create a skucomplement?\" -> POST /api/catalog/pvt/skucomplement\n- \"Get skucomplement details?\" -> GET /api/catalog/pvt/skucomplement/{skuComplementId}\n- \"Delete a skucomplement?\" -> DELETE /api/catalog/pvt/skucomplement/{skuComplementId}\n- \"Get stockkeepingunitbyean details?\" -> GET /api/catalog_system/pvt/sku/stockkeepingunitbyean/{ean}\n- \"List all ean?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/ean\n- \"Delete a ean?\" -> DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/ean/{ean}\n- \"Create a skuattachment?\" -> POST /api/catalog/pvt/skuattachment\n- \"List all attachment?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/attachment\n- \"Delete a skuattachment?\" -> DELETE /api/catalog/pvt/skuattachment/{skuAttachmentAssociationId}\n- \"Create a associateattachment?\" -> POST /api/catalog_system/pvt/sku/associateattachments\n- \"List all file?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/file\n- \"Create a file?\" -> POST /api/catalog/pvt/stockkeepingunit/{skuId}/file\n- \"Update a file?\" -> PUT /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}\n- \"Delete a file?\" -> DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}\n- \"Delete a file?\" -> DELETE /api/catalog/pvt/stockkeepingunit/disassociate/{skuId}/file/{skuFileId}\n- \"List all stockkeepingunitkit?\" -> GET /api/catalog/pvt/stockkeepingunitkit\n- \"Create a stockkeepingunitkit?\" -> POST /api/catalog/pvt/stockkeepingunitkit\n- \"Get stockkeepingunitkit details?\" -> GET /api/catalog/pvt/stockkeepingunitkit/{kitId}\n- \"Delete a stockkeepingunitkit?\" -> DELETE /api/catalog/pvt/stockkeepingunitkit/{kitId}\n- \"Get skuseller details?\" -> GET /api/catalog_system/pvt/skuseller/{sellerId}/{sellerSkuId}\n- \"Create a attribute?\" -> POST /api/catalog/pvt/stockkeepingunit/{skuId}/attribute\n- \"List all attribute?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/attribute\n- \"Get attribute details?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}\n- \"Update a attribute?\" -> PUT /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}\n- \"Delete a attribute?\" -> DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}\n- \"Get skuservice details?\" -> GET /api/catalog/pvt/skuservice/{skuServiceId}\n- \"Update a skuservice?\" -> PUT /api/catalog/pvt/skuservice/{skuServiceId}\n- \"Delete a skuservice?\" -> DELETE /api/catalog/pvt/skuservice/{skuServiceId}\n- \"Create a skuservice?\" -> POST /api/catalog/pvt/skuservice\n- \"Create a skuservicetypeattachment?\" -> POST /api/catalog/pvt/skuservicetypeattachment\n- \"Delete a skuservicetypeattachment?\" -> DELETE /api/catalog/pvt/skuservicetypeattachment/{skuServiceTypeAttachmentId}\n- \"Create a skuservicetype?\" -> POST /api/catalog/pvt/skuservicetype\n- \"Get skuservicetype details?\" -> GET /api/catalog/pvt/skuservicetype/{skuServiceTypeId}\n- \"Update a skuservicetype?\" -> PUT /api/catalog/pvt/skuservicetype/{skuServiceTypeId}\n- \"Delete a skuservicetype?\" -> DELETE /api/catalog/pvt/skuservicetype/{skuServiceTypeId}\n- \"Create a skuservicevalue?\" -> POST /api/catalog/pvt/skuservicevalue\n- \"Get skuservicevalue details?\" -> GET /api/catalog/pvt/skuservicevalue/{skuServiceValueId}\n- \"Update a skuservicevalue?\" -> PUT /api/catalog/pvt/skuservicevalue/{skuServiceValueId}\n- \"Delete a skuservicevalue?\" -> DELETE /api/catalog/pvt/skuservicevalue/{skuServiceValueId}\n- \"List all specification?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/specification\n- \"Create a specification?\" -> POST /api/catalog/pvt/stockkeepingunit/{skuId}/specification\n- \"Delete a specification?\" -> DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/specification/{specificationId}\n- \"Create a stockkeepingunit?\" -> POST /api/catalog/pvt/subcollection/{subCollectionId}/stockkeepingunit\n- \"Delete a stockkeepingunit?\" -> DELETE /api/catalog/pvt/subcollection/{subCollectionId}/stockkeepingunit/{skuId}\n- \"Get tree details?\" -> GET /api/catalog_system/pub/category/tree/{categoryLevels}\n- \"Get category details?\" -> GET /api/catalog/pvt/category/{categoryId}\n- \"Update a category?\" -> PUT /api/catalog/pvt/category/{categoryId}\n- \"Create a category?\" -> POST /api/catalog/pvt/category\n- \"List all similarcategory?\" -> GET /api/catalog/pvt/product/{productId}/similarcategory\n- \"Delete a similarcategory?\" -> DELETE /api/catalog/pvt/product/{productId}/similarcategory/{categoryId}\n- \"Get listByCategoryId details?\" -> GET /api/catalog_system/pub/specification/field/listByCategoryId/{categoryId}\n- \"Get listTreeByCategoryId details?\" -> GET /api/catalog_system/pub/specification/field/listTreeByCategoryId/{categoryId}\n- \"Create a category?\" -> POST /api/catalog/pvt/subcollection/{subCollectionId}/category\n- \"Delete a category?\" -> DELETE /api/catalog/pvt/subcollection/{subCollectionId}/category/{categoryId}\n- \"List all list?\" -> GET /api/catalog_system/pvt/brand/list\n- \"List all pagedlist?\" -> GET /api/catalog_system/pvt/brand/pagedlist\n- \"Get brand details?\" -> GET /api/catalog_system/pvt/brand/{brandId}\n- \"Create a brand?\" -> POST /api/catalog/pvt/brand\n- \"Get brand details?\" -> GET /api/catalog/pvt/brand/{brandId}\n- \"Update a brand?\" -> PUT /api/catalog/pvt/brand/{brandId}\n- \"Delete a brand?\" -> DELETE /api/catalog/pvt/brand/{brandId}\n- \"Create a brand?\" -> POST /api/catalog/pvt/subcollection/{subCollectionId}/brand\n- \"Delete a brand?\" -> DELETE /api/catalog/pvt/subcollection/{subCollectionId}/brand/{brandId}\n- \"Get attachment details?\" -> GET /api/catalog/pvt/attachment/{attachmentid}\n- \"Update a attachment?\" -> PUT /api/catalog/pvt/attachment/{attachmentid}\n- \"Delete a attachment?\" -> DELETE /api/catalog/pvt/attachment/{attachmentid}\n- \"Create a attachment?\" -> POST /api/catalog/pvt/attachment\n- \"List all attachments?\" -> GET /api/catalog/pvt/attachments\n- \"List all inactive?\" -> GET /api/catalog/pvt/collection/inactive\n- \"Create a collection?\" -> POST /api/catalog/pvt/collection\n- \"List all importfileexample?\" -> GET /api/catalog/pvt/collection/stockkeepingunit/importfileexample\n- \"Create a importinsert?\" -> POST /api/catalog/pvt/collection/{collectionId}/stockkeepingunit/importinsert\n- \"Create a importexclude?\" -> POST /api/catalog/pvt/collection/{collectionId}/stockkeepingunit/importexclude\n- \"List all products?\" -> GET /api/catalog/pvt/collection/{collectionId}/products\n- \"Get collection details?\" -> GET /api/catalog/pvt/collection/{collectionId}\n- \"Update a collection?\" -> PUT /api/catalog/pvt/collection/{collectionId}\n- \"Delete a collection?\" -> DELETE /api/catalog/pvt/collection/{collectionId}\n- \"List all subcollection?\" -> GET /api/catalog/pvt/collection/{collectionId}/subcollection\n- \"Get subcollection details?\" -> GET /api/catalog/pvt/subcollection/{subCollectionId}\n- \"Update a subcollection?\" -> PUT /api/catalog/pvt/subcollection/{subCollectionId}\n- \"Delete a subcollection?\" -> DELETE /api/catalog/pvt/subcollection/{subCollectionId}\n- \"Create a subcollection?\" -> POST /api/catalog/pvt/subcollection\n- \"Create a position?\" -> POST /api/catalog/pvt/collection/{collectionId}/position\n- \"List all specificationvalue?\" -> GET /api/catalog/pvt/subcollection/{subCollectionId}/specificationvalue\n- \"Create a specificationvalue?\" -> POST /api/catalog/pvt/subcollection/{subCollectionId}/specificationvalue\n- \"Get specification details?\" -> GET /api/catalog/pvt/specification/{specificationId}\n- \"Update a specification?\" -> PUT /api/catalog/pvt/specification/{specificationId}\n- \"Create a specification?\" -> POST /api/catalog/pvt/specification\n- \"Get fieldGet details?\" -> GET /api/catalog_system/pub/specification/fieldGet/{fieldId}\n- \"Create a field?\" -> POST /api/catalog_system/pvt/specification/field\n- \"Get fieldValue details?\" -> GET /api/catalog_system/pvt/specification/fieldValue/{fieldValueId}\n- \"Get fieldvalue details?\" -> GET /api/catalog_system/pub/specification/fieldvalue/{fieldId}\n- \"Create a fieldValue?\" -> POST /api/catalog_system/pvt/specification/fieldValue\n- \"Get specificationvalue details?\" -> GET /api/catalog/pvt/specificationvalue/{specificationValueId}\n- \"Update a specificationvalue?\" -> PUT /api/catalog/pvt/specificationvalue/{specificationValueId}\n- \"Create a specificationvalue?\" -> POST /api/catalog/pvt/specificationvalue\n- \"Get groupbycategory details?\" -> GET /api/catalog_system/pvt/specification/groupbycategory/{categoryId}\n- \"Get groupGet details?\" -> GET /api/catalog_system/pub/specification/groupGet/{groupId}\n- \"Create a specificationgroup?\" -> POST /api/catalog/pvt/specificationgroup\n- \"Update a specificationgroup?\" -> PUT /api/catalog/pvt/specificationgroup/{groupId}\n- \"Get nonstructured details?\" -> GET /api/catalog/pvt/specification/nonstructured/{Id}\n- \"Delete a nonstructured?\" -> DELETE /api/catalog/pvt/specification/nonstructured/{Id}\n- \"List all nonstructured?\" -> GET /api/catalog/pvt/specification/nonstructured\n- \"List all list?\" -> GET /api/catalog_system/pvt/saleschannel/list\n- \"Get saleschannel details?\" -> GET /api/catalog_system/pub/saleschannel/{salesChannelId}\n- \"List all list?\" -> GET /api/catalog_system/pvt/seller/list\n- \"Get seller details?\" -> GET /api/catalog_system/pvt/seller/{sellerId}\n- \"Create a seller?\" -> POST /api/catalog_system/pvt/seller\n- \"Get seller details?\" -> GET /api/catalog_system/pvt/sellers/{sellerId}\n- \"Create a supplier?\" -> POST /api/catalog/pvt/supplier\n- \"Update a supplier?\" -> PUT /api/catalog/pvt/supplier/{supplierId}\n- \"Delete a supplier?\" -> DELETE /api/catalog/pvt/supplier/{supplierId}\n- \"List all salespolicy?\" -> GET /api/catalog/pvt/product/{productId}/salespolicy\n- \"Delete a salespolicy?\" -> DELETE /api/catalog/pvt/product/{productId}/salespolicy/{tradepolicyId}\n- \"List all stockkeepingunitidsbysaleschannel?\" -> GET /api/catalog_system/pvt/sku/stockkeepingunitidsbysaleschannel\n- \"Get GetIndexedInfo details?\" -> GET /api/catalog_system/pvt/products/GetIndexedInfo/{productId}\n- \"List all list?\" -> GET /api/catalog_system/pvt/commercialcondition/list\n- \"Get commercialcondition details?\" -> GET /api/catalog_system/pvt/commercialcondition/{commercialConditionId}\n- \"Get get details?\" -> GET /api/addon/pvt/giftlist/get/{listId}\n- \"List all language?\" -> GET /api/catalog/pvt/product/{productId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/products/{productId}/specification/{specificationId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/specificationgroup/{specificationGroupId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/specification/{specificationId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/specificationvalue/{valueId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/category/{categoryId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/brand/{brandId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/attachment/{attachmentId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/skuservicetype/{skuServiceTypeId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/skuservice/{skuserviceId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/skuservicevalue/{skuServiceValueId}/language\n- \"List all language?\" -> GET /api/catalog/pvt/collection/{collectionId}/language\n- \"Create a assortment?\" -> POST /api/catalog/pvt/assortment\n- \"List all assortment?\" -> GET /api/catalog/pvt/assortment\n- \"Get assortment details?\" -> GET /api/catalog/pvt/assortment/{productAssortmentID}\n- \"Update a assortment?\" -> PUT /api/catalog/pvt/assortment/{productAssortmentID}\n- \"Delete a assortment?\" -> DELETE /api/catalog/pvt/assortment/{productAssortmentID}\n- \"Delete a included-collection?\" -> DELETE /api/catalog/pvt/assortment/{productAssortmentID}/included-collections/{collectionID}\n- \"Delete a excluded-collection?\" -> DELETE /api/catalog/pvt/assortment/{productAssortmentID}/excluded-collections/{collectionID}\n- \"How to authenticate?\" -> See Auth section\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- List endpoints may support pagination; check for limit, offset, or cursor params\n- Create/update endpoints typically return the created/updated object\n\n## CLI\n\n```bash\n# Update this spec to the latest version\nnpx @lap-platform/lapsh get catalog-api -o references/api-spec.lap\n\n# Search for related APIs\nnpx @lap-platform/lapsh search catalog-api\n```\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Catalog API\n@base https://apiexamples.vtexcommercestable.com.br\n@version 1.0\n@auth ApiKey X-VTEX-API-AppKey in header | ApiKey X-VTEX-API-AppToken in header | ApiKey VtexIdclientAutCookie in header\n@common_fields {Content-Type: str=application/json # Type of the content being sent., Accept: str=application/json # HTTP Client Negotiation _Accept_ Header. Indicates the types of responses the client can understand.}\n@endpoints 208\n@hint download_for_search\n@toc api(208)\n\n@endpoint GET /api/catalog_system/pvt/products/GetProductAndSkuIds\n@desc Get product and SKU IDs\n@optional {categoryId: int(int32) # ID of the category from which you need to retrieve products and SKUs., _from: int(int32) # Insert the ID that will start the request result., _to: int(int32) # Insert the ID that will end the request result.}\n@returns(200) {data: map{Product ID: [int]}, range: map{total: int, from: int, to: int}} # OK\n\n@endpoint GET /api/catalog/pvt/product/{productId}\n@desc Get product by ID\n@required {productId: str # Product's unique numerical identifier.}\n@returns(200) {Id: int, Name: str, DepartmentId: int, CategoryId: int, BrandId: int, LinkId: str, RefId: str, IsVisible: bool, Description: str, DescriptionShort: str, ReleaseDate: str, KeyWords: str, Title: str, IsActive: bool, TaxCode: str, MetaTagDescription: str, SupplierId: int?, ShowWithoutStock: bool, AdWordsRemarketingCode: str, LomadeeCampaignCode: str, Score: int} # OK\n\n@endpoint PUT /api/catalog/pvt/product/{productId}\n@desc Update product\n@required {productId: int # Product's unique numerical identifier., Name: str # Product's name. Limited to 150 characters., CategoryId: int # Category ID associated with this product., BrandId: int # Brand ID associated with this product.}\n@optional {DepartmentId: int # Department ID according to the product's category., LinkId: str # Slug that will be used to build the product page URL. If it not informed, it will be generated according to the product's name replacing spaces and special characters by hyphens (`-`)., RefId: str # Product Reference Code. The limit for the product `RefId` is 100 characters., IsVisible: bool # Whether the product appears in search results and product listing pages (`true`) or doesn't (`false`). Typically used for gift items. Even when set as `false`, the product can still be added to the shopping cart. Although this isn't a mandatory field, if you don't send it in the request, its value will be automatically set to `false`., Description: str # Product description., DescriptionShort: str # Short product description. This information can be displayed on both the product page and the shelf, using the following controls:\r  Store Framework: `$product.DescriptionShort`.\r  Legacy CMS Portal: ``., ReleaseDate: str # Used to assist in the ordering of the search result of the site. Using the `O=OrderByReleaseDateDESC` query string, you can pull this value and show the display order by release date. This attribute is also used as a condition for dynamic collections., KeyWords: str # Store Framework: Deprecated. \r Legacy CMS Portal: Keywords or synonyms related to the product, separated by comma (`,`). \"Television\", for example, can have a substitute word like \"TV\". This field is important to make your searches more comprehensive., Title: str # Product's Title tag. Limited to 150 characters. It is presented in the browser tab and corresponds to the title of the product page. This field is important for SEO., IsActive: bool # Activate (`true`) or inactivate (`false`) product., TaxCode: str # Product tax code, used for tax calculation., MetaTagDescription: str # Brief description of the product for SEO. It is recommended not to exceed 150 characters., SupplierId: int # Deprecated field., ShowWithoutStock: bool # If `true`, activates the [Notify Me](https://help.vtex.com/en/tutorial/setting-up-the-notify-me-option--2VqVifQuf6Co2KG048Yu6e) option when the product is out of stock., AdWordsRemarketingCode: str # This is a legacy field. Do not take this information into consideration., LomadeeCampaignCode: str # This is a legacy field. Do not take this information into consideration., Score: int # Value used to set the priority on the search result page.}\n@returns(200) {Id: int, Name: str, DepartmentId: int, CategoryId: int, BrandId: int, LinkId: str, RefId: str, IsVisible: bool, Description: str, DescriptionShort: str, ReleaseDate: str, KeyWords: str, Title: str, IsActive: bool, TaxCode: str, MetaTagDescription: str, SupplierId: int?, ShowWithoutStock: bool, AdWordsRemarketingCode: str, LomadeeCampaignCode: str, Score: int} # OK\n\n@endpoint GET /api/catalog_system/pvt/products/productget/{productId}\n@desc Get product and its general context\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) {Id: int, Name: str, DepartmentId: int, CategoryId: int, BrandId: int, LinkId: str, RefId: str, IsVisible: bool, Description: str, DescriptionShort: str, ReleaseDate: str, KeyWords: str, Title: str, IsActive: bool, TaxCode: str, MetaTagDescription: str, SupplierId: int, ShowWithoutStock: bool, ListStoreId: [int], AdWordsRemarketingCode: str, LomadeeCampaignCode: str} # OK\n\n@endpoint GET /api/catalog_system/pvt/products/productgetbyrefid/{refId}\n@desc Get product by reference ID\n@required {refId: str # Product reference code.}\n@returns(200) {Id: int, Name: str, DepartmentId: int, CategoryId: int, BrandId: int, LinkId: str, RefId: str, IsVisible: bool, Description: str, DescriptionShort: str, ReleaseDate: str, KeyWords: str, Title: str, IsActive: bool, TaxCode: str, MetaTagDescription: str, SupplierId: int, ShowWithoutStock: bool, ListStoreId: [int], AdWordsRemarketingCode: str, LomadeeCampaignCode: str} # OK\n\n@endpoint GET /api/catalog_system/pub/products/variations/{productId}\n@desc Get product's SKUs by product ID\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) {productId: int, name: str, salesChannel: str, available: bool, displayMode: str, dimensions: [str], dimensionsInputType: map, dimensionsMap: map, skus: [map]} # OK\n\n@endpoint GET /api/addon/pvt/review/GetProductRate/{productId}\n@desc Get product review rate by product ID\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/product\n@desc Create product with category and brand\n@returns(200) {Id: int, Name: str, DepartmentId: int, CategoryId: int, BrandId: int, LinkId: str, RefId: str, IsVisible: bool, Description: str, DescriptionShort: str, ReleaseDate: str, KeyWords: str, Title: str, IsActive: bool, TaxCode: str, MetaTagDescription: str, SupplierId: int?, ShowWithoutStock: bool, AdWordsRemarketingCode: str?, LomadeeCampaignCode: str?, Score: int} # OK\n@example_request {\"Id\":42,\"Name\":\"Black T-Shirt\",\"CategoryPath\":\"Mens/Clothing/T-Shirts\",\"DepartmentId\":1,\"BrandName\":\"Acme\",\"RefId\":\"31011706925\",\"Title\":\"Black T-Shirt\",\"LinkId\":\"tshirt-black\",\"Description\":\"A classic black t-shirt made from soft, breathable cotton\",\"ReleaseDate\":\"2025-07-01T00:00:00\",\"IsVisible\":true,\"IsActive\":true,\"TaxCode\":\"12345\",\"MetaTagDescription\":\"tshirt black\",\"ShowWithoutStock\":true,\"LomadeeCampaignCode\":null,\"Score\":1}\n\n@endpoint GET /api/catalog_system/pvt/products/{productId}/specification\n@desc Get product specifications by product ID\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog_system/pvt/products/{productId}/specification\n@desc Update product specification by product ID\n@required {productId: int # Product's unique identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/product/{productId}/specification\n@desc Get product specifications and their information by product ID\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/product/{productId}/specification\n@desc Associate product specification\n@required {productId: int # Product's unique numerical identifier., FieldId: int # Specification field ID.}\n@optional {FieldValueId: int # Specification value ID. Mandatory for `FieldTypeId` `5`, `6` and `7`. Must not be used for any other Field types., Text: str # Value of specification. Only for `FieldTypeId` different from `5`, `6` and `7`.}\n@returns(200) {Id: int, ProductId: int, FieldId: int, FieldValueId: int, Text: str} # OK\n\n@endpoint DELETE /api/catalog/pvt/product/{productId}/specification\n@desc Delete all product specifications by product ID\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/product/{productId}/specification/{specificationId}\n@desc Delete a product specification\n@required {productId: int # Product's unique numerical identifier., specificationId: int # Product specification's unique numerical identifier. For radio, checkbox, or combo specifications, use the specification field ID (`specificationFieldId`) instead. You can retrieve these values using the endpoint [Get product specifications and their information by product ID](https://developers.vtex.com/docs/api-reference/catalog-api#get-/api/catalog/pvt/product/-productId-/specification). They correspond to the `Id` and `FieldId` values, respectively.}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/product/{productId}/specificationvalue\n@desc Associate product specification using specification name and group name\n@required {productId: int # Product's unique numerical identifier., FieldName: str # Specification name. Limited to 100 characters., GroupName: str # Group name., RootLevelSpecification: bool # Root level specification., FieldValues: [str] # Array of specification values.}\n@returns(200) OK\n@example_request {\"FieldName\":\"Material\",\"GroupName\":\"Composition\",\"RootLevelSpecification\":true,\"FieldValues\":[\"Cotton\",\"Polyester\"]}\n\n@endpoint GET /api/catalog_system/pvt/sku/stockkeepingunitids\n@desc List all SKU IDs\n@required {page: int # Number of the page from where you need to retrieve SKU IDs., pagesize: int # Size of the page from where you need retrieve SKU IDs. The maximum value is `1000`.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/sku/stockkeepingunitbyid/{skuId}\n@desc Get SKU and context\n@required {skuId: int # SKU's unique identifier number.}\n@optional {sc: int # Sales channel's unique identifier number.}\n@returns(200) {Id: int(int32), ProductId: int(int32), NameComplete: str, ComplementName: str, ProductName: str, ProductDescription: str, ProductRefId: str, TaxCode: str, SkuName: str, IsActive: bool, IsTransported: bool?, IsInventoried: bool?, IsGiftCardRecharge: bool, ImageUrl: str, DetailUrl: str, CSCIdentification: str?, BrandId: str, BrandName: str, Dimension: map{cubicweight: num, height: num, length: num, weight: num, width: num}, RealDimension: map{realCubicWeight: num, realHeight: num, realLength: num, realWeight: num, realWidth: num}, ManufacturerCode: str, IsKit: bool, KitItems: [str], Services: [str], Categories: [str], Attachments: [map], Collections: [str], SkuSellers: [map], SalesChannels: [int], Images: [map], SkuSpecifications: [map], ProductSpecifications: [map], ProductClustersIds: str, ProductCategoryIds: str, ProductGlobalCategoryId: int?, ProductCategories: map, CommercialConditionId: int(int32), RewardValue: num, AlternateIds: map{Ean: str, RefId: str}, AlternateIdValues: [str], EstimatedDateArrival: str?, MeasurementUnit: str, UnitMultiplier: num, InformationSource: str?, ModalType: str?, KeyWords: str?, ReleaseDate: str?, ProductIsVisible: bool, ShowIfNotAvailable: bool, IsProductActive: bool, ProductFinalScore: int} # OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit\n@desc Get SKU by reference ID\n@required {RefId: str # SKU reference ID.}\n@returns(200) {Id: int, ProductId: int, IsActive: bool, ActivateIfPossible: bool, Name: str, RefId: str, Ean: str, PackagedHeight: num, PackagedLength: num, PackagedWidth: num, PackagedWeightKg: int, Height: num, Length: num, Width: num, WeightKg: num, CubicWeight: num, IsKit: bool, CreationDate: str, RewardValue: num, EstimatedDateArrival: str?, ManufacturerCode: str, CommercialConditionId: int, MeasurementUnit: str, UnitMultiplier: num, ModalType: str?, KitItensSellApart: bool, Videos: [str]} # OK\n\n@endpoint POST /api/catalog/pvt/stockkeepingunit\n@desc Create SKU\n@required {ProductId: int # ID of the product associated with this SKU., Name: str # SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_. Limited to 200 characters., PackagedHeight: num # Height used for shipping calculation., PackagedLength: num # Length used for shipping calculation., PackagedWidth: num # Width used for shipping calculation., PackagedWeightKg: int # Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. Do not fill in this field with `0` or `null`, because this might result in shipping issues.}\n@optional {Id: int # SKU unique identifier. If not informed, it will be automatically generated by VTEX., IsActive: bool # Defines if the SKU is active (`true`) or not (`false`). During SKU creation, do not set this field as `true` or you will receive a `400 Bad Request` error. You should activate the SKU afterwards, as explained in [Activating an SKU](https://developers.vtex.com/docs/guides/skus#activating-an-sku)., ActivateIfPossible: bool # When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component. We recommend setting it to `true`, unless you plan to have an internal workflow to manually activate SKUs., RefId: str # Reference code used internally for organizational purposes. Must be unique. Required only if `Ean` is not informed, but can be used alongside `Ean` as well. The limit for the SKU `RefId` is 50 characters., Height: num # SKU real height., Length: num # SKU real length., Width: num # SKU real width., WeightKg: num # Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams., CubicWeight: num # [Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128)., IsKit: bool # Defines whether the SKU is made up of one or more SKUs (part of a kit) (`true`) or not (`false`). Must be enabled if you are adding a kit. Once activated, this definition cannot be reverted., CreationDate: str # Date and time of the SKU's creation., RewardValue: num # Credit that the customer receives when finalizing an order that includes the SKU. By filling this field out with `1`, the customer receives credit on the site in the selected currency, e.g. U$ 1., EstimatedDateArrival: str # To add the product as pre-sale, enter the product estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. You must take into consideration both the launch date and the freight calculation for the arrival date., ManufacturerCode: str # Identifier provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer's code., CommercialConditionId: int # Commercial condition ID, used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Learn more at [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445)., MeasurementUnit: str(un/kg/g/mg/m/m²/m³/cm/cm²/cm³/mm/mm²/mm³/oz/lb/ft/ft²/ft³/in/in²/in³) # Measurement unit. This field should only be used when it is necessary to convert the unit of measure for sale. In common cases, use `un` (unit). \rThe acceptables values are: \r- `un`: Unit \r- `kg`: Kilogram \r- `g`: Gram \r- `mg`: Milligram \r- `m`: Meter \r- `m²`: Square meter \r- `m³`: Cubic meter \r- `cm`: Centimeter \r- `cm²`: Square centimeter \r- `cm³`: Cubic centimeter \r- `mm`: Millimeter \r- `mm²`: Square millimeter \r- `mm³`: Cubic millimeter \r- `oz`: Ounce \r- `lb`: Pound \r- `ft`: Foot \r- `ft²`: Square foot \r- `ft³`: Cubic foot \r- `in`: Inch \r- `in²`: Square inch \r- `in³`: Cubic inch, UnitMultiplier: num # Multiple number of SKU. If the multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward., ModalType: str # Links an unusual type of SKU that needs special transportation, such as meat, glass, or a mattress, to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy)., KitItensSellApart: bool # Defines if kit components can be sold apart., Videos: [str] # Videos URLs.}\n@returns(200) {Id: int, ProductId: int, IsActive: bool, ActivateIfPossible: bool, Name: str, RefId: str, PackagedHeight: num, PackagedLength: num, PackagedWidth: num, PackagedWeightKg: int, Height: num, Length: num, Width: num, WeightKg: num, CubicWeight: num, IsKit: bool, CreationDate: str, RewardValue: num, EstimatedDateArrival: str?, ManufacturerCode: str, CommercialConditionId: int, MeasurementUnit: str, UnitMultiplier: num, ModalType: str?, KitItensSellApart: bool, Videos: [str]} # OK\n\n@endpoint GET /api/catalog_system/pvt/sku/stockkeepingunitidbyrefid/{refId}\n@desc Get SKU ID by reference ID\n@required {refId: str # SKU reference ID.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/sku/stockkeepingunitbyalternateId/{alternateId}\n@desc Get SKU by alternate ID\n@required {alternateId: int # Product EAN or `RefId`.}\n@returns(200) {Id: int, ProductId: int, NameComplete: str, ComplementName: str, ProductName: str, ProductDescription: str, ProductRefId: str, TaxCode: str, SkuName: str, IsActive: bool, IsTransported: bool, IsInventoried: bool, IsGiftCardRecharge: bool, ImageUrl: str, DetailUrl: str, CSCIdentification: str?, BrandId: str, BrandName: str, Dimension: map{cubicweight: num, height: num, length: num, weight: num, width: num}, RealDimension: map{realCubicWeight: num, realHeight: num, realLength: num, realWeight: num, realWidth: num}, ManufacturerCode: str, IsKit: bool, KitItems: [str], Services: [str], Categories: [str], CategoriesFullPath: [str], Attachments: [map], Collections: [str], SkuSellers: [map], SalesChannels: [int], Images: [map], SkuSpecifications: [map], ProductSpecifications: [map], ProductClustersIds: str, PositionsInClusters: map, ProductClusterNames: map, ProductClusterHighlights: map, ProductCategoryIds: str, IsDirectCategoryActive: bool, ProductGlobalCategoryId: int?, ProductCategories: map, CommercialConditionId: int(int32), RewardValue: num, AlternateIds: map{Ean: str, RefId: str}, AlternateIdValues: [str], EstimatedDateArrival: str?, MeasurementUnit: str, UnitMultiplier: num, InformationSource: str?, ModalType: str?, KeyWords: str?, ReleaseDate: str?, ProductIsVisible: bool, ShowIfNotAvailable: bool, IsProductActive: bool, ProductFinalScore: int} # OK\n\n@endpoint GET /api/catalog_system/pvt/sku/stockkeepingunitByProductId/{productId}\n@desc Get SKU list by product ID\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog_system/pub/sku/stockkeepingunitidsbyrefids\n@desc Retrieve SKU ID list by reference ID list\n@returns(200) OK\n@errors {500: Internal Server Error}\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}\n@desc Get SKU\n@required {skuId: int # SKU unique identifier number.}\n@returns(200) {Id: int, ProductId: int, IsActive: bool, ActivateIfPossible: bool, Name: str, RefId: str, PackagedHeight: num, PackagedLength: num, PackagedWidth: num, PackagedWeightKg: int, Height: num, Length: num, Width: num, WeightKg: num, CubicWeight: num, IsKit: bool, CreationDate: str, RewardValue: num, EstimatedDateArrival: str?, ManufacturerCode: str, CommercialConditionId: int, MeasurementUnit: str, UnitMultiplier: num, ModalType: str?, KitItensSellApart: bool, Videos: [str]} # OK\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}\n@desc Update SKU\n@required {skuId: int # SKU's unique numerical identifier., ProductId: int # ID of the product associated with this SKU., IsActive: bool # Although the inclusion of the IsActive field is optional, not including it will result in the field's value being interpreted as null, leading to the deactivation of the SKU. When updating the integration with the Catalog, send (`true`) If you wish to make sure the SKU is active. Otherwise send (`false`)., Name: str # SKU name, meaning the variation of the previously added product. For example: **Product** - _Fridge_, **SKU** - _110V_., PackagedHeight: num # Height used for shipping calculation., PackagedLength: num # Length used for shipping calculation., PackagedWidth: num # Width used for shipping calculation., PackagedWeightKg: int # Weight used for shipping calculation, in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams. Do not fill in this field with `0` or `null`, because this might result in shipping issues.}\n@optional {ActivateIfPossible: bool # When set to `true`, this attribute will automatically update the SKU as active once associated with an image or an active component., RefId: str # Reference code used internally for organizational purposes. Must be unique. It is not required only if EAN code already exists. If not, this field must be provided. The limit for the SKU `RefId` is 50 characters., Height: num # SKU real height., Length: num # SKU real length., Width: num # SKU real width., WeightKg: num # Weight of the SKU in the measurement [configured in the store](https://help.vtex.com/en/tutorial/filling-in-system-settings--tutorials_269), which by default is in grams., CubicWeight: num # [Cubic weight](https://help.vtex.com/en/tutorial/understanding-the-cubic-weight-factor--tutorials_128)., IsKit: bool # Defines whether the SKU is made up of one or more SKUs (part of a kit) (`true`) or not (`false`). Must be enabled if you are adding a kit. Once activated, this definition cannot be reverted., CreationDate: str # Date and time of the SKU's creation., RewardValue: num # Credit that the customer receives when finalizing an order that includes the SKU. By filling this field out with `1`, the customer receives credit on the site in the selected currency, e.g. U$ 1., EstimatedDateArrival: str # To add the product as pre-sale, enter the product estimated arrival date in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) format. You must take into consideration both the launch date and the freight calculation for the arrival date., ManufacturerCode: str # Identifier provided by the manufacturers to identify their product. This field should be filled in if the product has a specific manufacturer's code., CommercialConditionId: int # Commercial condition ID, used to define SKU specific promotions or installment rules. In case of no specific condition, use `1` (default value). This field does not accept `0`. Learn more at [Registering a commercial condition](https://help.vtex.com/tutorial/registering-a-commercial-condition--tutorials_445)., MeasurementUnit: str(un/kg/g/mg/m/m²/m³/cm/cm²/cm³/mm/mm²/mm³/oz/lb/ft/ft²/ft³/in/in²/in³) # Measurement unit. This field should only be used when it is necessary to convert the unit of measure for sale. In common cases, use `un` (unit). \rThe acceptables values are: \r- `un`: Unit \r- `kg`: Kilogram \r- `g`: Gram \r- `mg`: Milligram \r- `m`: Meter \r- `m²`: Square meter \r- `m³`: Cubic meter \r- `cm`: Centimeter \r- `cm²`: Square centimeter \r- `cm³`: Cubic centimeter \r- `mm`: Millimeter \r- `mm²`: Square millimeter \r- `mm³`: Cubic millimeter \r- `oz`: Ounce \r- `lb`: Pound \r- `ft`: Foot \r- `ft²`: Square foot \r- `ft³`: Cubic foot \r- `in`: Inch \r- `in²`: Square inch \r- `in³`: Cubic inch, UnitMultiplier: num # Multiple number of SKU. If the multiplier is 5.0000, the product can be added in multiple quantities of 5, 10, 15, 20, onward., ModalType: str # Links an unusual type of SKU that needs special transportation, such as meat, glass, or a mattress, to a carrier specialized in delivering it. This field should be filled in with the name of the modal (e.g. \"Chemicals\" or \"Refrigerated products\"). To learn more about this feature, read our articles [How the modal works](https://help.vtex.com/en/tutorial/how-does-the-modal-work--tutorials_125) and [Setting up modal for carriers](https://help.vtex.com/en/tutorial/configure-modal--3jhLqxuPhuiq24UoykCcqy)., KitItensSellApart: bool # Defines if kit components can be sold apart., Videos: [str] # Videos URLs.}\n@returns(200) {Id: int, ProductId: int, IsActive: bool, ActivateIfPossible: bool, Name: str, RefId: str, PackagedHeight: num, PackagedLength: num, PackagedWidth: num, PackagedWeightKg: int, Height: num, Length: num, Width: num, WeightKg: num, CubicWeight: num, IsKit: bool, CreationDate: str, RewardValue: num, EstimatedDateArrival: str?, ManufacturerCode: str, CommercialConditionId: int, MeasurementUnit: str, UnitMultiplier: num, ModalType: str?, KitItensSellApart: bool, Videos: [str]} # OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/complement\n@desc Get SKU complement by SKU ID\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/complement/{complementTypeId}\n@desc Get SKU complements by complement type ID\n@required {skuId: int # ID of the SKU which will be inserted as a complement in the parent SKU., complementTypeId: int # Complement type ID. This represents the type of the complement. The possible values are: `1` for **Accessory**; `2` for **Suggestion**; `3` for **Similar product**; `5` for **Show together**.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/sku/complements/{parentSkuId}/{type}\n@desc Get SKU complements by type\n@required {parentSkuId: int # ID of the parent SKU, where the complement is inserted., type: int # Complement type ID. This represents the type of the complement. The possible values are: `1` for **Accessory**; `2` for **Suggestion**; `3` for **Similar product**; `5` for **Show together**.}\n@returns(200) {ParentSkuId: int, ComplementSkuIds: [int], Type: str} # OK\n\n@endpoint POST /api/catalog/pvt/skucomplement\n@desc Create SKU complement\n@required {ParentSkuId: int # ID of the parent SKU, where the complement is inserted., SkuId: int # ID of the SKU which will be inserted as a complement in the parent SKU., ComplementTypeId: int(1/2/3/5) # Complement type ID. This represents the type of the complement. The possible values are: `1` for **Accessory**; `2` for **Suggestion**; `3` for **Similar product**; `5` for **Show together**.}\n@returns(200) OK\n@example_request {\"ParentSkuId\":1,\"SkuId\":2,\"ComplementTypeId\":2}\n\n@endpoint GET /api/catalog/pvt/skucomplement/{skuComplementId}\n@desc Get SKU complement by SKU complement ID\n@required {skuComplementId: int # SKU complement's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/skucomplement/{skuComplementId}\n@desc Delete SKU complement by SKU complement ID\n@required {skuComplementId: int # SKU complement's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/sku/stockkeepingunitbyean/{ean}\n@desc Get SKU by EAN\n@required {ean: str # EAN of the SKU which you need to retrieve details from.}\n@returns(200) {Id: int, ProductId: int, NameComplete: str, ComplementName: str, ProductName: str, ProductDescription: str, ProductRefId: str, TaxCode: str, SkuName: str, IsActive: bool, IsTransported: bool, IsInventoried: bool, IsGiftCardRecharge: bool, ImageUrl: str, DetailUrl: str, CSCIdentification: str?, BrandId: str, BrandName: str, Dimension: map{cubicweight: num, height: num, length: num, weight: num, width: num}, RealDimension: map{realCubicWeight: num, realHeight: num, realLength: num, realWeight: num, realWidth: num}, ManufacturerCode: str, IsKit: bool, KitItems: [str], Services: [str], Categories: [str], CategoriesFullPath: [str], Attachments: [map], Collections: [str], SkuSellers: [map], SalesChannels: [int], Images: [map], SkuSpecifications: [map], ProductSpecifications: [map], ProductClustersIds: str, PositionsInClusters: map, ProductClusterNames: map, ProductClusterHighlights: map, ProductCategoryIds: str, IsDirectCategoryActive: bool, ProductGlobalCategoryId: int?, ProductCategories: map, CommercialConditionId: int(int32), RewardValue: num, AlternateIds: map{Ean: str, RefId: str}, AlternateIdValues: [str], EstimatedDateArrival: str?, MeasurementUnit: str, UnitMultiplier: num, InformationSource: str?, ModalType: str?, KeyWords: str?, ReleaseDate: str?, ProductIsVisible: bool, ShowIfNotAvailable: bool, IsProductActive: bool, ProductFinalScore: int} # OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/ean\n@desc Get EAN by SKU ID\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/ean\n@desc Delete all SKU EAN values\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/stockkeepingunit/{skuId}/ean/{ean}\n@desc Create SKU EAN\n@required {skuId: int # SKU's unique numerical identifier., ean: str # EAN.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/ean/{ean}\n@desc Delete SKU EAN\n@required {skuId: int # SKU's unique numerical identifier., ean: str # EAN number.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/skuattachment\n@desc Associate SKU attachment\n@required {AttachmentId: int # Attachment ID., SkuId: int # Unique identifier of an SKU.}\n@returns(200) {Id: int, AttachmentId: int, SkuId: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/skuattachment\n@desc Dissociate attachments and SKUs\n@optional {skuId: int(int32) # SKU ID. By using this query param, you can dissociate all the attachments from an SKU based on its SKU ID., attachmentId: int(int32) # Attachment ID. By using this query param, you can dissociate the given attachment from all previously associated SKUs.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/attachment\n@desc Get SKU attachments by SKU ID\n@required {skuId: int # SKU unique identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/skuattachment/{skuAttachmentAssociationId}\n@desc Delete SKU attachment by attachment association ID\n@required {skuAttachmentAssociationId: int # ID of the association between the attachment and the SKU, which corresponds to the `Id` in the response body of the [Associate SKU attachment](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-post-sku-attachment) and the [Get SKU attachment by SKU ID](https://developers.vtex.com/vtex-rest-api/reference/get_api-catalog-pvt-stockkeepingunit-skuid-attachment) endpoints.}\n@returns(200) OK\n\n@endpoint POST /api/catalog_system/pvt/sku/associateattachments\n@desc Associate attachments to an SKU\n@required {SkuId: int # Unique identifier of the SKU., AttachmentNames: [str] # Array with all the names of the attachments that you need to associate to the SKU.}\n@returns(200) OK\n@example_request {\"SkuId\":1,\"AttachmentNames\":[\"T-Shirt Customization\"]}\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/file\n@desc Get SKU files\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/stockkeepingunit/{skuId}/file\n@desc Create SKU file\n@required {skuId: int # SKU's unique numerical identifier., Name: str # SKU image name., Url: str # External image's URL.  The URL must start with the protocol identifier (`http://` or `https://`) and end with the file extension (`.jpg`, `.png` or `.gif`).}\n@optional {IsMain: bool # Defines if the image is the main image of the SKU., Label: str # SKU image label., Text: str # General text of the image., Position: int # Position of the SKU image as displayed in the storefront, where `0` corresponds to the first position, `1` to the second position, and so on. Note that:\r - When `isMain` is `true`, the image position will always be `0`.\r - When you configure more positions than the number of images, the count will jump a position. For example, if you have images in positions `0`, `1`, `2`, and you update image `1` to position `3`, you will have `0`, `2`, `3`.\r - If you configure images for the same position, they will both occupy it. For example, for images `0`, `1`, `2`, if you update image `2` for position `1`, you will have `0`, `1`, `1`. When in position conflict, images will be ordered by image ID.\r \r You can reorganize all image positions using the [Reorder SKU files](https://developers.vtex.com/docs/api-reference/catalog-api#put-/api/catalog/pvt/stockkeepingunit/-skuId-/file/reorder) endpoint, or via VTEX Admin, on the [SKU editing page](https://help.vtex.com/en/tutorial/adding-or-editing-skus--4ryZ6J45kwn3jDiQBxGiiN).}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/file\n@desc Delete all SKU files\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}\n@desc Update SKU file\n@required {skuId: int # SKU's unique numerical identifier., skuFileId: int # ID of the association of the SKU and the image, which can be obtained by placing a request to the [Get SKU file](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-sku-file) endpoint and copying the `Id` field., Name: str # SKU image name., Url: str # External image's URL.  The URL must start with the protocol identifier (`http://` or `https://`) and end with the file extension (`.jpg`, `.png` or `.gif`).}\n@optional {IsMain: bool # Defines if the image is the main image of the SKU., Label: str # SKU image label., Text: str # General text of the image., Position: int # Position of the SKU image as displayed in the storefront, where `0` corresponds to the first position, `1` to the second position, and so on. Note that:\r - When `isMain` is `true`, the image position will always be `0`.\r - When you configure more positions than the number of images, the count will jump a position. For example, if you have images in positions `0`, `1`, `2`, and you update image `1` to position `3`, you will have `0`, `2`, `3`.\r - If you configure images for the same position, they will both occupy it. For example, for images `0`, `1`, `2`, if you update image `2` for position `1`, you will have `0`, `1`, `1`. When in position conflict, images will be ordered by image ID.\r \r You can reorganize all image positions using the [Reorder SKU files](https://developers.vtex.com/docs/api-reference/catalog-api#put-/api/catalog/pvt/stockkeepingunit/-skuId-/file/reorder) endpoint, or via VTEX Admin, on the [SKU editing page](https://help.vtex.com/en/tutorial/adding-or-editing-skus--4ryZ6J45kwn3jDiQBxGiiN).}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}\n@desc Delete SKU image file\n@required {skuId: int # SKU's unique numerical identifier., skuFileId: int # ID of the association of the SKU and the image, which can be obtained by placing a request to the [Get SKU file](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-sku-file) endpoint and copying the `Id` field.}\n@returns(200) OK\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}/file/reorder\n@desc Reorder SKU files\n@required {skuId: int # SKU unique numerical identifier.}\n@returns(200) OK\n@errors {400: Bad request. All files are required.}\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/copy/{skuIdfrom}/{skuIdto}/file\n@desc Copy files from an SKU to another SKU\n@required {skuIdfrom: int # __Origin__ SKU's unique numerical identifier., skuIdto: int # __Target__ SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/disassociate/{skuId}/file/{skuFileId}\n@desc Disassociate SKU file\n@required {skuId: int # SKU's unique numerical identifier., skuFileId: int # ID of the association of the SKU and the image, which can be obtained by placing a request to the [Get SKU file](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-sku-file) endpoint and copying the `Id` field.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunitkit\n@desc Get SKU kit by SKU ID or parent SKU ID\n@optional {skuId: int(int32) # SKU's unique numerical identifier., parentSkuId: int(int32) # Parent SKU's unique numerical identifier.}\n@returns(200) {Id: int, StockKeepingUnitParent: int, StockKeepingUnitId: int, Quantity: int, UnitPrice: int} # OK\n\n@endpoint POST /api/catalog/pvt/stockkeepingunitkit\n@desc Create SKU kit\n@required {StockKeepingUnitParent: int # SKU ID of the SKU kit., StockKeepingUnitId: int # Component SKU ID., Quantity: int # Component quantity., UnitPrice: num # Component price per unit.}\n@returns(200) {Id: int, StockKeepingUnitParent: int, StockKeepingUnitId: int, Quantity: int, UnitPrice: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunitkit\n@desc Delete SKU kit by SKU ID or parent SKU ID\n@optional {skuId: int(int32) # SKU's unique numerical identifier., parentSkuId: int(int32) # Parent SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunitkit/{kitId}\n@desc Get SKU kit\n@required {kitId: int # Kit's unique numerical identifier}\n@returns(200) {Id: int, StockKeepingUnitParent: int, StockKeepingUnitId: int, Quantity: int, UnitPrice: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunitkit/{kitId}\n@desc Delete SKU kit by kit ID\n@required {kitId: int # Kit's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/skuseller/{sellerId}/{sellerSkuId}\n@desc Get details of a seller's SKU\n@required {sellerId: str # ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID., sellerSkuId: str # SKU ID in the seller's store.}\n@returns(200) {IsPersisted: bool, IsRemoved: bool, SkuSellerId: int(int32), SellerId: str, StockKeepingUnitId: int(int32), SellerStockKeepingUnitId: str, IsActive: bool, UpdateDate: str, RequestedUpdateDate: str?} # OK\n\n@endpoint POST /api/catalog_system/pvt/skuseller/remove/{sellerId}/{sellerSkuId}\n@desc Remove a seller's SKU binding\n@required {sellerId: str # ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID., sellerSkuId: str # SKU ID in the seller's store.}\n@returns(200) OK\n\n@endpoint POST /api/catalog_system/pvt/skuseller/changenotification/{sellerId}/{sellerSkuId}\n@desc Change notification with seller ID and seller SKU ID\n@required {sellerId: str # ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID., sellerSkuId: str # ID of the binding of the seller with the SKU.}\n@returns(204) No Content\n\n@endpoint POST /api/catalog_system/pvt/skuseller/changenotification/{skuId}\n@desc Change notification with SKU ID\n@required {skuId: str # A string that identifies the SKU in the marketplace. This is the ID that the marketplace will use to look for the SKU whose change the seller wants to inform. If the marketplace finds this ID, it responds with status code 200. Otherwise, it responds with status code 404.}\n@returns(200) OK\n@errors {403: Forbidden, 404: Not found, 429: Too many requests}\n\n@endpoint POST /api/catalog/pvt/stockkeepingunit/{skuId}/attribute\n@desc Create SKU attribute\n@required {skuId: int # SKU's unique numerical identifier., SpecificationName: str # Name of the SKU attribute. This is an open-text field., SpecificationValue: str # Value of the SKU attribute. This is an open-text field with a maximum length of 3,500 characters. Avoid characters that break the JSON string (for example, unescaped backslashes), as they will cause a status code `400` error.}\n@optional {IsVisible: bool # Defines if the attribute is visible on the store (`true`) or not (`false`).}\n@returns(200) {Id: int, SkuId: int, SpecificationName: str, SpecificationValue: str, IsVisible: bool} # OK\n@errors {400: Bad Request}\n@example_request {\"SpecificationName\":\"Ingredients\",\"SpecificationValue\":\"wax, oil, pigment\",\"IsVisible\":true}\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/attribute\n@desc Get all SKU attributes\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/attribute\n@desc Delete all SKU attributes\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}\n@desc Get SKU attribute by ID\n@required {skuId: int # SKU's unique numerical identifier., skuAttributeId: int # SKU attribute unique numerical identifier.}\n@returns(200) {Id: int, SkuId: int, SpecificationName: str, SpecificationValue: str, IsVisible: bool} # OK\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}\n@desc Update SKU attribute\n@required {skuId: int # SKU's unique numerical identifier., skuAttributeId: int # SKU attribute unique numerical identifier., SpecificationName: str # Name of the SKU attribute. This is an open-text field., SpecificationValue: str # Value of the SKU attribute. This is an open-text field with a maximum length of 3,500 characters. Avoid characters that break the JSON string (for example, unescaped backslashes), as they will cause a status code `400` error.}\n@optional {IsVisible: bool # Defines if the attribute is visible on the store (`true`) or not (`false`).}\n@returns(200) {Id: int, SkuId: int, SpecificationName: str, SpecificationValue: str, IsVisible: bool} # OK\n@errors {400: Bad Request}\n@example_request {\"SpecificationName\":\"Ingredients\",\"SpecificationValue\":\"beeswax, coconut oil, natural pigment\",\"IsVisible\":true}\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}\n@desc Delete SKU attribute\n@required {skuId: int # SKU's unique numerical identifier., skuAttributeId: int # SKU attribute unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/skuservice/{skuServiceId}\n@desc Get SKU service\n@required {skuServiceId: int # SKU service unique identifier.}\n@returns(200) {Id: int, SkuServiceTypeId: int, SkuServiceValueId: int, SkuId: int, Name: str, Text: str, IsActive: bool} # OK\n\n@endpoint PUT /api/catalog/pvt/skuservice/{skuServiceId}\n@desc Update SKU service\n@required {skuServiceId: int # SKU service unique identifier., SkuServiceTypeId: int # SKU service type ID., SkuServiceValueId: int # SKU service value ID., SkuId: int # SKU ID., Name: str # SKU service name. Maximum of 50 characters., Text: str # Internal description for the SKU service. Maximum of 100 characters., IsActive: bool # Defines if the SKU service is active or not.}\n@returns(200) {Id: int, SkuServiceTypeId: int, SkuServiceValueId: int, SkuId: int, Name: str, Text: str, IsActive: bool} # OK\n\n@endpoint DELETE /api/catalog/pvt/skuservice/{skuServiceId}\n@desc Dissociate SKU service\n@required {skuServiceId: int # SKU service unique identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/skuservice\n@desc Associate SKU service\n@required {SkuServiceTypeId: int # SKU service type ID., SkuServiceValueId: int # SKU service value ID., SkuId: int # SKU ID., Name: str # SKU service name. Maximum of 50 characters., Text: str # Internal description of the SKU service. Maximum of 100 characters., IsActive: bool # Defines if the SKU service is active or not.}\n@returns(200) {Id: int, SkuServiceTypeId: int, SkuServiceValueId: int, SkuId: int, Name: str, Text: str, IsActive: bool} # OK\n\n@endpoint POST /api/catalog/pvt/skuservicetypeattachment\n@desc Associate SKU service attachment\n@required {AttachmentId: int # Attachment ID., SkuServiceTypeId: int # SKU service type ID.}\n@returns(200) {Id: int, AttachmentId: int, SkuServiceTypeId: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/skuservicetypeattachment\n@desc Dissociate attachment by attachment ID or SKU service type ID\n@optional {attachmentId: int # SKU service attachment unique identifier., skuServiceTypeId: int # SKU service type unique identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/skuservicetypeattachment/{skuServiceTypeAttachmentId}\n@desc Dissociate attachment from SKU service type\n@required {skuServiceTypeAttachmentId: int # SKU service attachment unique identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/skuservicetype\n@desc Create SKU service type\n@required {Name: str # SKU service type name. Maximum of 100 characters., IsActive: bool=true # Defines if the SKU service type is active or not., ShowOnProductFront: bool # Deprecated field., ShowOnCartFront: bool # Defines if the SKU service type is displayed on the cart screen., ShowOnAttachmentFront: bool # Defines if the SKU service type has an attachment., ShowOnFileUpload: bool # Defines if the SKU service type can be associated with an attachment or not., IsGiftCard: bool # Defines if the SKU service type is displayed as a gift card., IsRequired: bool # Defines if the SKU service type is mandatory.}\n@returns(200) {Id: int, Name: str, IsActive: bool, ShowOnProductFront: bool, ShowOnCartFront: bool, ShowOnAttachmentFront: bool, ShowOnFileUpload: bool, IsGiftCard: bool, IsRequired: bool} # OK\n\n@endpoint GET /api/catalog/pvt/skuservicetype/{skuServiceTypeId}\n@desc Get SKU service type\n@required {skuServiceTypeId: int # SKU service type unique identifier.}\n@returns(200) {Id: int, Name: str, IsActive: bool, ShowOnProductFront: bool, ShowOnCartFront: bool, ShowOnAttachmentFront: bool, ShowOnFileUpload: bool, IsGiftCard: bool, IsRequired: bool} # OK\n\n@endpoint PUT /api/catalog/pvt/skuservicetype/{skuServiceTypeId}\n@desc Update SKU service type\n@required {skuServiceTypeId: int # SKU service type unique identifier., Name: str # SKU service type name. Maximum of 100 characters., IsActive: bool=true # Defines if the SKU service type is active or not., ShowOnProductFront: bool # Deprecated field., ShowOnCartFront: bool # Defines if the SKU service type is displayed on the cart screen., ShowOnAttachmentFront: bool # Defines if the SKU service type has an attachment., ShowOnFileUpload: bool # Defines if the SKU service type can be associated with an attachment or not., IsGiftCard: bool # Defines if the SKU service type is displayed as a gift card., IsRequired: bool # Defines if the SKU service type is mandatory.}\n@returns(200) {Id: int, Name: str, IsActive: bool, ShowOnProductFront: bool, ShowOnCartFront: bool, ShowOnAttachmentFront: bool, ShowOnFileUpload: bool, IsGiftCard: bool, IsRequired: bool} # OK\n\n@endpoint DELETE /api/catalog/pvt/skuservicetype/{skuServiceTypeId}\n@desc Delete SKU service type\n@required {skuServiceTypeId: int # SKU service type unique identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/skuservicevalue\n@desc Create SKU service value\n@required {SkuServiceTypeId: int # SKU service type ID., Name: str # SKU service value name. Maximum of 100 characters., Value: num # SKU service value value., Cost: num # SKU service value cost.}\n@returns(200) {Id: int, SkuServiceTypeId: int, Name: str, Value: num, Cost: num} # OK\n\n@endpoint GET /api/catalog/pvt/skuservicevalue/{skuServiceValueId}\n@desc Get SKU service value\n@required {skuServiceValueId: int # SKU service value unique identifier.}\n@returns(200) {Id: int, SkuServiceTypeId: int, Name: str, Value: num, Cost: num} # OK\n\n@endpoint PUT /api/catalog/pvt/skuservicevalue/{skuServiceValueId}\n@desc Update SKU service value\n@required {skuServiceValueId: int # SKU service value unique identifier., SkuServiceTypeId: int # SKU service type ID., Name: str # SKU service value name. Maximum of 100 characters., Value: num # SKU service value value., Cost: num # SKU service value cost.}\n@returns(200) {Id: int, SkuServiceTypeId: int, Name: str, Value: num, Cost: num} # OK\n\n@endpoint DELETE /api/catalog/pvt/skuservicevalue/{skuServiceValueId}\n@desc Delete SKU service value\n@required {skuServiceValueId: int # SKU service value unique identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/specification\n@desc Get SKU specifications\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/stockkeepingunit/{skuId}/specification\n@desc Associate SKU specification\n@required {skuId: int # SKU's unique numerical identifier., FieldId: int # Specification field ID.}\n@optional {FieldValueId: int # Specification value ID. Required only for `FieldTypeId` as `5`, `6` and `7`.}\n@returns(200) {Id: int, SkuId: int, FieldId: int, FieldValueId: int, Text: str} # OK\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}/specification\n@desc Update SKU specification\n@required {skuId: int # SKU's unique numerical identifier., Id: int # Specification and SKU association unique identifier. This field cannot be updated., FieldId: int # Specification field unique identifier. This field cannot be updated., FieldValueId: int # Specification value unique identifier. This field can only be updated with other values of the same `FieldId`.}\n@optional {SkuId: int # SKU unique identifier. This field cannot be updated., Text: str # Specification value name. This field is automatically updated if the `FieldValue` is updated. Otherwise, the value cannot be modified.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/specification\n@desc Delete all SKU specifications\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/stockkeepingunit/{skuId}/specification/{specificationId}\n@desc Delete SKU specification\n@required {skuId: int # SKU's unique numerical identifier., specificationId: int # Specification's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}/specificationvalue\n@desc Associate SKU specification using specification name and group name\n@required {skuId: int # SKU's unique numerical identifier., FieldName: str # Specification name. Limited to 100 characters., GroupName: str # Group name., RootLevelSpecification: bool # Root level specification., FieldValues: [str] # Array of specification values. SKU specifications must contain only one value.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/subcollection/{subCollectionId}/stockkeepingunit\n@desc Add SKU to subcollection\n@required {subCollectionId: int # Subcollection'''s unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid)., SkuId: int # Unique identifier of an SKU.}\n@returns(200) {SubCollectionId: int, SkuId: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/subcollection/{subCollectionId}/stockkeepingunit/{skuId}\n@desc Delete SKU from subcollection\n@required {subCollectionId: int # Subcollection unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid)., skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pub/category/tree/{categoryLevels}\n@desc Get category tree\n@required {categoryLevels: str # Value of the category level you need to retrieve.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/category/{categoryId}\n@desc Get category by ID\n@required {categoryId: int # Category's unique numerical identifier.}\n@optional {includeTreePath: bool # When you use the `includeTreePath` query param set as `true`, the response body returns the existing values for the following fields:\r - `TreePath`\r - `TreePathIds`\r - `TreePathLinkIds`\r \r Using this param is optional.}\n@returns(200) {Id: int, Name: str, FatherCategoryId: int?, Title: str, Description: str, Keywords: str, IsActive: bool, LomadeeCampaignCode: str, AdWordsRemarketingCode: str, ShowInStoreFront: bool, ShowBrandFilter: bool, ActiveStoreFrontLink: bool, GlobalCategoryId: int, StockKeepingUnitSelectionMode: str, Score: int?, LinkId: str, HasChildren: bool, TreePath: [str]?, TreePathIds: [int]?, TreePathLinkIds: [str]?} # OK\n\n@endpoint PUT /api/catalog/pvt/category/{categoryId}\n@desc Update category\n@required {categoryId: int # Category's unique numerical identifier., Name: str # Category name., Keywords: str # Substitute words for the category., Title: str # Text used in title tag for category page., Description: str # Text used in meta description tag for category page., AdWordsRemarketingCode: str # This is a legacy field. Do not take this information into consideration., LomadeeCampaignCode: str # This is a legacy field. Do not take this information into consideration., FatherCategoryId: int # ID of the parent category, apply in case of category and subcategory., GlobalCategoryId: int # Google global category ID., ShowInStoreFront: bool # If true, the category is shown in the top and side menu., IsActive: bool # If true, the category page becomes available in store., ActiveStoreFrontLink: bool # If true, the category link becomes active in store., ShowBrandFilter: bool # If true, the category page displays a brand filter., Score: int # Score for search sorting order., StockKeepingUnitSelectionMode: str # Defines how the SKU will be exhibited.}\n@returns(200) {Id: int, Name: str, FatherCategoryId: int?, Title: str, Description: str, Keywords: str, IsActive: bool, LomadeeCampaignCode: str, AdWordsRemarketingCode: str, ShowInStoreFront: bool, ShowBrandFilter: bool, ActiveStoreFrontLink: bool, GlobalCategoryId: int, StockKeepingUnitSelectionMode: str, Score: int?, LinkId: str, HasChildren: bool, TreePath: [str]?, TreePathIds: [int]?, TreePathLinkIds: [str]?} # OK\n\n@endpoint POST /api/catalog/pvt/category\n@desc Create category\n@required {Name: str # Category name., Keywords: str # Substitute words for the category., Title: str # Text used in title tag for category page., Description: str # Text used in meta description tag for category page., AdWordsRemarketingCode: str # This is a legacy field. Do not take this information into consideration., LomadeeCampaignCode: str # This is a legacy field. Do not take this information into consideration., FatherCategoryId: int # ID of the parent category, apply in case of category and subcategory., GlobalCategoryId: int # Google global category ID., ShowInStoreFront: bool # If `true`, the category is shown in the top and side menu., IsActive: bool # If `true`, the category page becomes available in store., ActiveStoreFrontLink: bool # If `true`, the category link becomes active in store., ShowBrandFilter: bool # If `true`, the category page displays a brand filter., Score: int # Score for search sorting order., StockKeepingUnitSelectionMode: str(SPECIFICATION/LIST) # Defines how SKUs will be displayed in the storefront and selected by customers. The possible values are:\r - `SPECIFICATION`: choosing product variations (like size or color) through specification fields.\r - `LIST`: selecting and item from a list of SKUs.}\n@optional {Id: int # Category unique identifier. If not informed, it will be automatically generated by VTEX.}\n@returns(200) {Id: int, Name: str, FatherCategoryId: int?, Title: str, Description: str, Keywords: str, IsActive: bool, LomadeeCampaignCode: str, AdWordsRemarketingCode: str, ShowInStoreFront: bool, ShowBrandFilter: bool, ActiveStoreFrontLink: bool, GlobalCategoryId: int, StockKeepingUnitSelectionMode: str, Score: int?, LinkId: str, HasChildren: bool, TreePath: [str]?, TreePathIds: [int]?, TreePathLinkIds: [str]?} # OK\n\n@endpoint GET /api/catalog/pvt/product/{productId}/similarcategory\n@desc Get similar categories\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/product/{productId}/similarcategory/{categoryId}\n@desc Add similar category\n@required {productId: int # Product's unique numerical identifier., categoryId: int # Similar category's unique numerical identifier.}\n@returns(200) {ProductId: int, StoreId: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/product/{productId}/similarcategory/{categoryId}\n@desc Delete similar category\n@required {productId: int # Product's unique numerical identifier., categoryId: int # Similar category's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pub/specification/field/listByCategoryId/{categoryId}\n@desc Get specifications by category ID\n@required {categoryId: int # Category ID.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pub/specification/field/listTreeByCategoryId/{categoryId}\n@desc Get specifications tree by category ID\n@required {categoryId: int # Category ID.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/subcollection/{subCollectionId}/category\n@desc Associate category to subcollection\n@required {subCollectionId: int # Subcollection's unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid)., CategoryId: int # Unique identifier of a category.}\n@returns(200) {SubCollectionId: int, CategoryId: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/subcollection/{subCollectionId}/category/{categoryId}\n@desc Delete category from subcollection\n@required {subCollectionId: int # Subcollection's unique numerical identifier, which can be obtained by placing a request to [Get subcollection by dollection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid)., categoryId: int # Category's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/brand/list\n@desc Get brand list\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/brand/pagedlist\n@desc Get paginated brand list\n@required {pageSize: int # Quantity of brands per page., page: int # Page number of the brand list.}\n@returns(200) {items: [map], paging: map{page: int, perPage: int, total: int, pages: int}} # OK\n\n@endpoint GET /api/catalog_system/pvt/brand/{brandId}\n@desc Get brand by ID\n@required {brandId: str # Brand ID.}\n@returns(200) {id: int, name: str, isActive: bool, title: str, metaTagDescription: str, imageUrl: str?} # OK\n\n@endpoint POST /api/catalog/pvt/brand\n@desc Create brand\n@required {Id: int # Brand's unique numerical identifier., Name: str # Brand name.}\n@optional {Text: str # Meta description for the brand page. A brief description of the brand, displayed by search engines. Since search engines can only display less than 150 characters, we recommend not exceeding this character limit when creating the description., Keywords: str # Store Framework - Deprecated.\r Legacy CMS Portal - Alternative search terms that will lead to the specific brand. The user can find the desired brand even when misspelling it. Used especially when words are of foreign origin and have a distinct spelling that is transcribed into a generic one, or when small spelling mistakes occur., SiteTitle: str # Meta title for the brand page., AdWordsRemarketingCode: str # This is a legacy field. Do not take this information into consideration., LomadeeCampaignCode: str # This is a legacy field. Do not take this information into consideration., Score: int # Store Framework - Deprecated\r Legacy CMS Portal - Value used to set the priority on the search result page., MenuHome: bool # Store Framework - Deprecated.\r Legacy CMS Portal - Defines if the brand appears in the Department Menu control (``)., Active: bool # Defines if the brand is active (`true`) or not (`false`)., LinkId: str # Brand page slug. Only lowercase letters and hyphens (`-`) are allowed.}\n@returns(200) {Id: int, Name: str, Text: str, Keywords: str, SiteTitle: str, AdWordsRemarketingCode: str, LomadeeCampaignCode: str, Score: int?, MenuHome: bool, Active: bool, LinkId: str?} # OK\n\n@endpoint GET /api/catalog/pvt/brand/{brandId}\n@desc Get brand and context\n@required {brandId: str # Brand ID.}\n@returns(200) {Id: int, Name: str, Text: str, Keywords: str, SiteTitle: str, AdWordsRemarketingCode: str, LomadeeCampaignCode: str, Score: int?, MenuHome: bool, Active: bool, LinkId: str?} # OK\n\n@endpoint PUT /api/catalog/pvt/brand/{brandId}\n@desc Update brand\n@required {brandId: str # Brand's unique numerical identifier., Id: int # Brand's unique numerical identifier., Name: str # Brand name.}\n@optional {Text: str # Meta description for the brand page. A brief description of the brand, displayed by search engines. Since search engines can only display less than 150 characters, we recommend not exceeding this character limit when creating the description., Keywords: str # Store Framework - Deprecated.\r Legacy CMS Portal - Alternative search terms that will lead to the specific brand. The user can find the desired brand even when misspelling it. Used especially when words are of foreign origin and have a distinct spelling that is transcribed into a generic one, or when small spelling mistakes occur., SiteTitle: str # Meta title for the brand page., AdWordsRemarketingCode: str # This is a legacy field. Do not take this information into consideration., LomadeeCampaignCode: str # This is a legacy field. Do not take this information into consideration., Score: int # Store Framework - Deprecated\r Legacy CMS Portal - Value used to set the priority on the search result page., MenuHome: bool # Store Framework - Deprecated.\r Legacy CMS Portal - Defines if the brand appears in the Department Menu control (``)., Active: bool # Defines if the brand is active (`true`) or not (`false`)., LinkId: str # Brand page slug. Only lowercase letters and hyphens (`-`) are allowed.}\n@returns(200) {Id: int, Name: str, Text: str, Keywords: str, SiteTitle: str, AdWordsRemarketingCode: str, LomadeeCampaignCode: str, Score: int?, MenuHome: bool, Active: bool, LinkId: str?} # OK\n\n@endpoint DELETE /api/catalog/pvt/brand/{brandId}\n@desc Delete brand\n@required {brandId: str # Brand's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/subcollection/{subCollectionId}/brand\n@desc Associate brand to subcollection\n@required {subCollectionId: int # Subcollection's unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid)., BrandId: int # Unique identifier of a brand.}\n@returns(200) {SubCollectionId: int, BrandId: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/subcollection/{subCollectionId}/brand/{brandId}\n@desc Delete brand from subcollection\n@required {subCollectionId: int # Subcollection's unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid)., brandId: int # Brand's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/attachment/{attachmentid}\n@desc Get attachment by ID\n@required {attachmentid: str # Attachment ID.}\n@returns(200) {Id: int, Name: str, IsRequired: bool, IsActive: bool, Domains: [map]} # OK\n\n@endpoint PUT /api/catalog/pvt/attachment/{attachmentid}\n@desc Update attachment\n@required {attachmentid: str # Attachment ID., Name: str # Attachment name., IsRequired: bool # Defines if the attachment is required or not., IsActive: bool # Defines if the attachment is active or not., Domains: [map{FieldName: str, MaxCaracters: str, DomainValues: str}] # List of characteristics related to the attachment.}\n@returns(200) {Id: int, Name: str, IsRequired: bool, IsActive: bool, Domains: [map]} # OK\n\n@endpoint DELETE /api/catalog/pvt/attachment/{attachmentid}\n@desc Delete attachment\n@required {attachmentid: str # Attachment ID.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/attachment\n@desc Create attachment\n@required {Name: str # Attachment name., IsRequired: bool # Defines if the attachment is required or not., IsActive: bool # Defines if the attachment is active or not., Domains: [map{FieldName: str, MaxCaracters: str, DomainValues: str}] # List of characteristics related to the attachment.}\n@returns(200) {Id: int, Name: str, IsRequired: bool, IsActive: bool, Domains: [map]} # OK\n\n@endpoint GET /api/catalog/pvt/attachments\n@desc Get all attachments\n@returns(200) {Page: int, Size: int, TotalRows: int, TotalPage: int, Data: [map]} # OK\n\n@endpoint GET /api/catalog/pvt/collection/inactive\n@desc Get all inactive collections\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/collection\n@desc Create collection\n@required {Name: str # Collection's name., Description: str # Collection's description for internal use, with the collection's details. It will not be used for search engines., Searchable: bool # Option making the collection searchable in the store., Highlight: bool # Option if you want the collection to highlight specific products using a tag., DateFrom: str # Collection start date and time. If a future date and time are set, the collection will have a scheduled status., DateTo: str # Collection end date and time.}\n@returns(200) {Id: int, Name: str, Description: str, Searchable: bool, Highlight: bool, DateFrom: str, DateTo: str, TotalProducts: int, Type: str} # OK\n\n@endpoint GET /api/catalog/pvt/collection/stockkeepingunit/importfileexample\n@desc Import collection file example\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/collection/{collectionId}/stockkeepingunit/importinsert\n@desc Add products to collection by imported file\n@required {collectionId: int # Collection's unique identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/collection/{collectionId}/stockkeepingunit/importexclude\n@desc Remove products from collection by imported file\n@required {collectionId: int # Collection's unique identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/collection/{collectionId}/products\n@desc Get products from a collection\n@required {collectionId: int # Collection's unique identifier.}\n@optional {page: int # Page number., pageSize: int # Number of the items of the page., Filter: str # Filter used to refine the collection's products., Active: bool # Defines if the status of the product is active or not., Visible: bool # Defines if the product is visible on the store or not., CategoryId: int # Product's category unique identifier., BrandId: int # Product's brand unique identifier., SupplierId: int # Product's supplier unique identifier., SalesChannelId: int # Product's sales channel unique identifier., ReleaseFrom: str # Product past release date., ReleaseTo: str # Product future release date., SpecificationProduct: str # Product specification field Value. You must also fill in `SpecificationFieldId` to use this parameter., SpecificationFieldId: int # Product specification field unique identifier.}\n@returns(200) {Page: int, Size: int, TotalRows: int, TotalPage: int, Data: [map]} # OK\n\n@endpoint GET /api/catalog/pvt/collection/{collectionId}\n@desc Get collection by ID\n@required {collectionId: int # Collection's unique numerical identifier.}\n@returns(200) {Id: int, Name: str, Description: str?, Searchable: bool, Highlight: bool, DateFrom: str, DateTo: str, TotalProducts: int, Type: str} # OK\n\n@endpoint PUT /api/catalog/pvt/collection/{collectionId}\n@desc Update collection\n@required {collectionId: int # Collection's unique numerical identifier., Name: str # Collection name., Searchable: bool # Defines if the collection is searchable or not., Highlight: bool # Defines if the collection is highlighted or not., DateFrom: str # Initial value date for the collection., DateTo: str # Final value date for the collection.}\n@returns(200) {Id: int, Name: str, Description: str?, Searchable: bool, Highlight: bool, DateFrom: str, DateTo: str, TotalProducts: int, Type: str} # OK\n\n@endpoint DELETE /api/catalog/pvt/collection/{collectionId}\n@desc Delete collection\n@required {collectionId: int # Collection's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/collection/{collectionId}/subcollection\n@desc Get subcollection by collection ID\n@required {collectionId: int # Collection's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/subcollection/{subCollectionId}\n@desc Get subcollection by subcollection ID\n@required {subCollectionId: int # Subcollection's unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).}\n@returns(200) {Id: int, CollectionId: int, Name: str, Type: str, PreSale: bool, Release: bool} # OK\n\n@endpoint PUT /api/catalog/pvt/subcollection/{subCollectionId}\n@desc Update subcollection\n@required {subCollectionId: int # Subcollection's unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid)., CollectionId: int # Collection ID., Name: str # SubCollection name., Type: str # Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used)., PreSale: bool # Defines PreSale date., Release: bool # Defines Release date.}\n@returns(200) {Id: int, CollectionId: int, Name: str, Type: str, PreSale: bool, Release: bool} # OK\n\n@endpoint DELETE /api/catalog/pvt/subcollection/{subCollectionId}\n@desc Delete subcollection\n@required {subCollectionId: int # Subcollection's unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/subcollection\n@desc Create subcollection\n@required {CollectionId: int # Subcollection ID., Name: str # Subcollection name., Type: str # Either `“Exclusive”` (all the products contained in it will not be used) or `“Inclusive”` (all the products contained in it will be used)., PreSale: bool # Defines PreSale date., Release: bool # Defines Release date.}\n@returns(200) {Id: int, CollectionId: int, Name: str, Type: str, PreSale: bool, Release: bool} # OK\n\n@endpoint POST /api/catalog/pvt/collection/{collectionId}/position\n@desc Reposition SKU on the subcollection\n@required {collectionId: int # Collection's unique numerical identifier., skuId: int # SKU ID., position: int # SKU position., subCollectionId: int # Subcollection ID.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/subcollection/{subCollectionId}/specificationvalue\n@desc Get specification values by subcollection ID\n@required {subCollectionId: int # Subcollection unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).}\n@returns(200) {Page: int, Size: int, TotalRows: int, TotalPage: int, Data: [map]} # OK\n\n@endpoint POST /api/catalog/pvt/subcollection/{subCollectionId}/specificationvalue\n@desc Use specification value in subcollection by ID\n@required {subCollectionId: int # Subcollection unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid)., SubCollectionId: int # Subcollection unique identifier., SpecificationValueId: int # Subcollection specification value ID.}\n@returns(200) {SubCollectionId: int, SpecificationValueId: int} # OK\n\n@endpoint DELETE /api/catalog/pvt/subcollection/{subCollectionId}/specificationvalue\n@desc Delete specification value from subcollection by ID\n@required {subCollectionId: int # Subcollection unique numerical identifier, which can be obtained by placing a request to [Get subcollection by collection ID](https://developers.vtex.com/vtex-rest-api/reference/catalog-api-get-subcollection-collectionid).}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/specification/{specificationId}\n@desc Get specification by specification ID\n@required {specificationId: int # Specification's unique numerical identifier.}\n@returns(200) {Id: int, FieldTypeId: int, CategoryId: int, FieldGroupId: int, Name: str, Description: str, Position: int, IsFilter: bool, IsRequired: bool, IsOnProductDetails: bool, IsStockKeepingUnit: bool, IsWizard: bool, IsActive: bool, IsTopMenuLinkActive: bool, IsSideMenuLinkActive: bool, DefaultValue: str?} # OK\n\n@endpoint PUT /api/catalog/pvt/specification/{specificationId}\n@desc Update specification\n@required {specificationId: int # Specification's unique numerical identifier., FieldTypeId: int(1/2/4/5/6/7/8/9) # Field type can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`. This information is not editable., CategoryId: int # Specification category ID. This information is not editable., FieldGroupId: int # Numerical ID of the specification group that contains the new specification. This information is not editable., Name: str # Specification name. Limited to 100 characters., Description: str # Specification description., Position: int # The current specification's position in comparison to the other specifications., IsFilter: bool # Defines if the specification can be used as a filter., IsRequired: bool # Defines if the specification is required or not., IsOnProductDetails: bool # Defines if the specification will be  shown on the product screen in the specification area., IsStockKeepingUnit: bool # Defines if the specification is applied to a specific SKU. This information is not editable., IsWizard: bool # Deprecated field., IsActive: bool # Defines if the specification is active or not., IsTopMenuLinkActive: bool # Defines if the specification is shown in the main menu of the site., IsSideMenuLinkActive: bool # Defines if the specification is shown in the side menu., DefaultValue: str # Specification default value.}\n@returns(200) {Id: int, FieldTypeId: int, CategoryId: int, FieldGroupId: int, Name: str, Description: str?, Position: int, IsFilter: bool, IsRequired: bool, IsOnProductDetails: bool, IsStockKeepingUnit: bool, IsWizard: bool?, IsActive: bool, IsTopMenuLinkActive: bool, IsSideMenuLinkActive: bool, DefaultValue: str} # OK\n\n@endpoint POST /api/catalog/pvt/specification\n@desc Create specification\n@required {FieldTypeId: int(1/2/4/5/6/7/8/9) # Field type ID can be `1 - Text`, `2 - Multi-Line Text`, `4 - Number`, `5 - Combo`, `6 - Radio`, `7 - Checkbox`, `8 - Indexed Text`, `9 - Indexed Multi-Line Text`., FieldGroupId: int # ID of the group of specifications that contains the new specification., Name: str # Specification name. Limited to 100 characters.}\n@optional {CategoryId: int # Category ID associated with this specification., Description: str # Deprecated field., Position: int # Store Framework - Deprecated.\r Legacy CMS Portal - This position number is used in ordering the specifications both in the navigation menu and in the specification listing on the product page., IsFilter: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar., IsRequired: bool # Makes the specification mandatory (`true`) or optional (`false`)., IsOnProductDetails: bool # Store Framework - Deprecated.\r Legacy CMS Portal -If specification is visible on the product page., IsStockKeepingUnit: bool # If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field., IsWizard: bool # Deprecated field., IsActive: bool # Enable (`true`) or disable (`false`) specification., IsTopMenuLinkActive: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To make the specification visible in the store's upper menu., IsSideMenuLinkActive: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To make the specification field clickable in the search navigation bar., DefaultValue: str # Specification default value.}\n@returns(200) {Id: int, FieldTypeId: int, CategoryId: int, FieldGroupId: int, Name: str, Description: str?, Position: int, IsFilter: bool, IsRequired: bool, IsOnProductDetails: bool, IsStockKeepingUnit: bool, IsWizard: bool?, IsActive: bool, IsTopMenuLinkActive: bool, IsSideMenuLinkActive: bool, DefaultValue: str} # OK\n\n@endpoint GET /api/catalog_system/pub/specification/fieldGet/{fieldId}\n@desc Get specification field\n@required {fieldId: int # Specification field ID.}\n@returns(200) {Name: str, FieldId: int, IsActive: bool, IsRequired: bool, FieldTypeId: int, FieldTypeName: str, FieldValueId: int?, Description: str?, IsStockKeepingUnit: bool, IsFilter: bool, IsOnProductDetails: bool, Position: int, IsWizard: bool?, IsTopMenuLinkActive: bool, IsSideMenuLinkActive: bool, DefaultValue: str?, FieldGroupId: int, FieldGroupName: str} # OK\n\n@endpoint POST /api/catalog_system/pvt/specification/field\n@desc Create specification field\n@required {Name: str # Specification field name. Limited to 100 characters., CategoryId: int # Category ID., FieldId: int # Specification field ID., IsActive: bool # Defines if the specification field is active. The default value is `true`., IsRequired: bool # Makes the specification field mandatory (`true`) or optional (`false`)., FieldTypeId: int(int32) # Specification field type ID., FieldValueId: int # Specification field value ID., Description: str # Specification field description., IsStockKeepingUnit: bool # If `true`, it will be added as a SKU specification. If `false`, it will be added as a product specification field., IsFilter: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar., IsOnProductDetails: bool # Store Framework - Deprecated.\r Legacy CMS Portal -If specification is visible on the product page., Position: int(int32) # Specification field position., IsWizard: bool # Deprecated field., IsTopMenuLinkActive: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To make the specification visible in the store's upper menu., IsSideMenuLinkActive: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To make the specification field clickable in the search navigation bar., DefaultValue: str # Specification field default value., FieldGroupId: int(int32) # Specification field group ID., FieldGroupName: str # Specification field group name.}\n@returns(200) OK\n@example_request {\"Name\":\"Material\",\"CategoryId\":4,\"FieldId\":88,\"IsActive\":true,\"IsRequired\":true,\"FieldTypeId\":1,\"FieldValueId\":1,\"IsStockKeepingUnit\":false,\"Description\":\"Composition of the product.\",\"IsFilter\":true,\"IsOnProductDetails\":false,\"Position\":1,\"IsWizard\":false,\"IsTopMenuLinkActive\":true,\"IsSideMenuLinkActive\":true,\"DefaultValue\":null,\"FieldGroupId\":20,\"FieldGroupName\":\"Clothes specifications\"}\n\n@endpoint PUT /api/catalog_system/pvt/specification/field\n@desc Update specification field\n@required {Name: str # Specification field ID., CategoryId: int # Category ID., FieldId: int # Specification field ID., IsActive: bool # Enables(`true`) or disables (`false`) the specification field., IsRequired: bool # Makes the specification field mandatory (`true`) or optional (`false`)., FieldTypeId: int # Specification field type ID., Description: str # Specification field description., IsStockKeepingUnit: bool # If `true`, it will be added as a SKU specification field. If `false`, it will be added as a product specification field., IsFilter: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To allow the specification to be used as a facet (filter) on the search navigation bar., IsOnProductDetails: bool # Store Framework - Deprecated.\r Legacy CMS Portal - If the specification is visible on the product page., Position: int # Specification field position., IsWizard: bool # Deprecated field., IsTopMenuLinkActive: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To make the specification visible in the store's upper menu., IsSideMenuLinkActive: bool # Store Framework - Deprecated.\r Legacy CMS Portal - To make the specification field clickable in the search navigation bar., DefaultValue: str # Specification field default value., FieldGroupId: int # Specification field group ID., FieldGroupName: str # Specification field group name.}\n@optional {FieldValueId: int # Specification field value ID.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/specification/fieldValue/{fieldValueId}\n@desc Get specification field value\n@required {fieldValueId: str # Specification value ID.}\n@returns(200) {FieldValueId: int(int32), FieldId: int, Name: str, Text: str, IsActive: bool, Position: int(int32)} # OK\n\n@endpoint GET /api/catalog_system/pub/specification/fieldvalue/{fieldId}\n@desc Get specification values by specification field ID\n@required {fieldId: int # Specification field ID.}\n@returns(200) OK\n\n@endpoint POST /api/catalog_system/pvt/specification/fieldValue\n@desc Create specification field value\n@required {FieldId: int(int32) # Specification field ID., Name: str # Specification field value name., Text: str # Specification field value description., IsActive: bool # Defines if the specification field value is active (`true`) or inactive (`false`)., Position: int # Specification field value position.}\n@returns(200) {FieldValueId: int(int32), FieldId: int, Name: str, Text: str, IsActive: bool, Position: int(int32)} # OK\n\n@endpoint PUT /api/catalog_system/pvt/specification/fieldValue\n@desc Update specification field value\n@required {FieldId: int # Specification field ID., Name: str # Specification field value name., Text: str # Specification field value description., IsActive: bool # Defines if the specification field value is active (`true`) or inactive (`false`)., Position: int(int32) # Specification field position.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/specificationvalue/{specificationValueId}\n@desc Get specification value\n@required {specificationValueId: int # Specification value's unique numerical identifier.}\n@returns(200) {FieldValueId: int(int32), FieldId: int, Name: str, Text: str, IsActive: bool, Position: int(int32)} # OK\n\n@endpoint PUT /api/catalog/pvt/specificationvalue/{specificationValueId}\n@desc Update specification value\n@required {specificationValueId: int # specification value's unique numerical identifier., FieldId: int # Specification ID associated with this specification value., Name: str # Specification value name.}\n@optional {Text: str # Specification value text., IsActive: bool # Enable (`true`) or disable (`false`) specification value., Position: int # The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`).}\n@returns(200) {FieldValueId: int, FieldId: int, Name: str, Text: str?, IsActive: bool, Position: int} # OK\n\n@endpoint POST /api/catalog/pvt/specificationvalue\n@desc Create specification value\n@required {FieldId: int # Specification field ID associated with this specification value., Name: str # Specification value name.}\n@optional {Text: str # Specification value text., IsActive: bool # Enable (`true`) or disable (`false`) specification value., Position: int # The position of the value to be shown on product registration page (`/admin/Site/Produto.aspx`).}\n@returns(200) {FieldValueId: int, FieldId: int, Name: str, Text: str?, IsActive: bool, Position: int} # OK\n\n@endpoint GET /api/catalog_system/pvt/specification/groupbycategory/{categoryId}\n@desc List specification group by category\n@required {categoryId: str # Category ID.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pub/specification/groupGet/{groupId}\n@desc Get specification group\n@required {groupId: str # Specification group ID.}\n@returns(200) {CategoryId: int?, Id: int, Name: str, Position: int?} # OK\n\n@endpoint POST /api/catalog/pvt/specificationgroup\n@desc Create specification group\n@required {CategoryId: int(int32) # Category ID., Name: str # Specification group name.}\n@returns(200) {Id: int(int32), CategoryId: int(int32), Name: str, Position: int(int32)} # OK\n\n@endpoint PUT /api/catalog/pvt/specificationgroup/{groupId}\n@desc Update specification group\n@required {groupId: int # Group's unique numerical identifier., CategoryId: int # Category ID where the specification group is contained., Id: int(int32) # Specification group ID., Name: str # Specification group name., Position: int # Specification group position.}\n@returns(200) {CategoryId: int, Id: int(int32), Name: str, Position: int} # OK\n\n@endpoint GET /api/catalog/pvt/specification/nonstructured/{Id}\n@desc Get non-structured specification by ID\n@required {Id: int # Non-structured specification's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/specification/nonstructured/{Id}\n@desc Delete non-structured specification\n@required {Id: int # Non-structured specification's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/specification/nonstructured\n@desc Get non-structured specification by SKU ID\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/specification/nonstructured\n@desc Delete non-structured specification by SKU ID\n@required {skuId: int # SKU's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/saleschannel/list\n@desc Get sales channel list\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pub/saleschannel/{salesChannelId}\n@desc Get sales channel by ID\n@required {salesChannelId: str # Sales channel ID.}\n@returns(200) {Id: int, Name: str, IsActive: bool, ProductClusterId: int?, CountryCode: str, CultureInfo: str, TimeZone: str, CurrencyCode: str?, CurrencySymbol: str, CurrencyLocale: int, CurrencyFormatInfo: map{CurrencyDecimalDigits: int, CurrencyDecimalSeparator: str, CurrencyGroupSeparator: str, CurrencyGroupSize: int, StartsWithCurrencySymbol: bool}, Origin: str?, Position: int?, ConditionRule: str?, CurrencyDecimalDigits: int} # OK\n\n@endpoint GET /api/catalog_system/pvt/seller/list\n@desc Get seller list\n@optional {sc: int(int32) # Sales channel ID., sellerType: int(int32) # There are two possible values for this parameter: \r- `1`: Regular sellers \r- `2`: [White label sellers](https://help.vtex.com/en/tutorial/seller-white-label--5orlGHyDHGAYciQ64oEgKa), isBetterScope: bool # If the seller is better scope.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/seller/{sellerId}\n@desc Get seller by ID\n@required {sellerId: str # ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID.}\n@returns(200) {SellerId: str, Name: str, Email: str, Description: str, ExchangeReturnPolicy: str, DeliveryPolicy: str, UseHybridPaymentOptions: bool, UserName: str?, Password: str?, SecutityPrivacyPolicy: str, CNPJ: str, CSCIdentification: str, ArchiveId: int?, UrlLogo: str, ProductCommissionPercentage: num, FreightCommissionPercentage: num, CategoryCommissionPercentage: str, FulfillmentEndpoint: str?, CatalogSystemEndpoint: str, IsActive: bool, MerchantName: str, FulfillmentSellerId: int?, SellerType: int, IsBetterScope: bool, TrustPolicy: str} # OK\n\n@endpoint PUT /api/catalog_system/pvt/seller\n@desc Update seller\n@required {SellerId: str # ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID., Name: str # Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method., Email: str # Email of the admin responsible for the seller., Description: str # Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563)., ExchangeReturnPolicy: str # Text describing the exchange and return policy previously agreed between the marketplace and the seller., DeliveryPolicy: str # Text describing the delivery policy previously agreed between the marketplace and the seller., UseHybridPaymentOptions: bool # Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller., UserName: str # Seller username., Password: str # Seller password., SecutityPrivacyPolicy: str # Text describing the security policy previously agreed between the marketplace and the seller., CNPJ: str # Company registration number., CSCIdentification: str # CSC identification., ArchiveId: int # Seller archive ID., UrlLogo: str # Seller URL logo., ProductCommissionPercentage: num # The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`., FreightCommissionPercentage: num # The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`., FulfillmentEndpoint: str # URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don't need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added., CatalogSystemEndpoint: str # URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`., IsActive: bool # If the selle is active (`true`) or not (`false`)., FulfillmentSellerId: int # Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank., SellerType: int # Seller type., IsBetterScope: bool # Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI).}\n@optional {CategoryCommissionPercentage: str # The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`., MerchantName: str # Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-payment--6k5JidhYRUxileNolY2VLx) article to know more., TrustPolicy: str # Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`.}\n@returns(200) {SellerId: str, Name: str, Email: str, Description: str, ExchangeReturnPolicy: str, DeliveryPolicy: str, UseHybridPaymentOptions: bool, UserName: str?, Password: str?, SecutityPrivacyPolicy: str, CNPJ: str, CSCIdentification: str, ArchiveId: int?, UrlLogo: str?, ProductCommissionPercentage: num, FreightCommissionPercentage: num, CategoryCommissionPercentage: str, FulfillmentEndpoint: str?, CatalogSystemEndpoint: str, IsActive: bool, MerchantName: str, FulfillmentSellerId: int?, SellerType: int, IsBetterScope: bool, TrustPolicy: str} # OK\n\n@endpoint POST /api/catalog_system/pvt/seller\n@desc Create seller\n@required {SellerId: str # Code used to identify the seller. It is assigned by the marketplace. We recommend filling it in with the seller's account name., Name: str # Name of the account in the seller's environment. You can find it on **Account settings > Account > Account Name**). Applicable only if the seller uses their own payment method., Email: str # Email of the admin responsible for the seller., Description: str # Text describing the seller with a marketing tone. You can display this text in the marketplace window display by [customizing the CMS](https://help.vtex.com/en/tutorial/list-of-controls-for-templates--tutorials_563)., ExchangeReturnPolicy: str # Text describing the exchange and return policy previously agreed between the marketplace and the seller., DeliveryPolicy: str # Text describing the delivery policy previously agreed between the marketplace and the seller., UseHybridPaymentOptions: bool # Allows customers to use gift cards from the seller to buy their products on the marketplace. It identifies purchases made with a gift card so that only the final price (with discounts applied) is paid to the seller., UserName: str # Seller username., Password: str # Seller password., SecutityPrivacyPolicy: str # Text describing the security policy previously agreed between the marketplace and the seller., CNPJ: str # Company registration number., CSCIdentification: str # CSC identification., ArchiveId: int # Seller archive ID., UrlLogo: str # Seller URL logo., ProductCommissionPercentage: num # The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`., FreightCommissionPercentage: num # The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`., FulfillmentEndpoint: str # URL of the endpoint for fulfillment of seller's orders, which the marketplace will use to communicate with the seller. This field applies to all sellers, regardless of their type. However, for `VTEX Stores`, you don't need to fill it in because the system will do that automatically. You can edit this field once the seller has been successfully added., CatalogSystemEndpoint: str # URL of the endpoint of the seller's catalog. This field will only be displayed if the seller type is VTEX Store. The field format will be as follows: `http://{sellerName}.vtexcommercestable.com.br/api/catalog_system/`., IsActive: bool # If the selle is active (`true`) or not (`false`)., FulfillmentSellerId: int # Identification code of the seller responsible for fulfilling the order. This is an optional field used when a seller sells SKUs from another seller. If the seller sells their own SKUs, it must be left blank., SellerType: int # Seller type., IsBetterScope: bool # Indicates whether it is a [comprehensive seller](https://help.vtex.com/en/tutorial/comprehensive-seller--5Qn4O2GpjUIzWTPpvLUfkI).}\n@optional {CategoryCommissionPercentage: str # The percentage that must be filled in as agreed between the marketplace and the seller. If there is no such commission, please fill in the field with the value: `0.00`., MerchantName: str # Name of the marketplace, used to guide payments. This field should be nulled if the marketplace is responsible for processing payments. Check out our [Split Payment](https://help.vtex.com/en/tutorial/split-payment--6k5JidhYRUxileNolY2VLx) article to know more., TrustPolicy: str # Seller trust policy. The default value is `'Default'`, but if your store is a B2B marketplace and you want to share the customers'emails with the sellers you need to set this field as `'AllowEmailSharing'`.}\n@returns(200) {SellerId: str, Name: str, Email: str, Description: str, ExchangeReturnPolicy: str, DeliveryPolicy: str, UseHybridPaymentOptions: bool, UserName: str?, Password: str?, SecutityPrivacyPolicy: str, CNPJ: str, CSCIdentification: str, ArchiveId: int?, UrlLogo: str?, ProductCommissionPercentage: num, FreightCommissionPercentage: num, CategoryCommissionPercentage: str, FulfillmentEndpoint: str?, CatalogSystemEndpoint: str, IsActive: bool, MerchantName: str, FulfillmentSellerId: int?, SellerType: int, IsBetterScope: bool, TrustPolicy: str} # OK\n\n@endpoint GET /api/catalog_system/pvt/sellers/{sellerId}\n@desc Get seller by ID\n@required {sellerId: str # ID that identifies the seller in the marketplace. It can be the same as the seller name or a unique number. Check the **Sellers management** section in the Admin to get the correct ID.}\n@returns(200) {SellerId: str, Name: str?, Email: str?, Description: str, ExchangeReturnPolicy: str, DeliveryPolicy: str, UseHybridPaymentOptions: bool, UserName: str?, Password: str?, SecutityPrivacyPolicy: str, CNPJ: str, CSCIdentification: str, ArchiveId: int?, UrlLogo: str, ProductCommissionPercentage: num, FreightCommissionPercentage: num, CategoryCommissionPercentage: str, FulfillmentEndpoint: str?, CatalogSystemEndpoint: str, IsActive: bool, MerchantName: str, FulfillmentSellerId: int?, SellerType: int, IsBetterScope: bool, TrustPolicy: str} # OK\n\n@endpoint POST /api/catalog/pvt/supplier\n@desc Create supplier\n@required {Name: str # Supplier Name., CorporateName: str # Supplier Corporate Name., StateInscription: str # State Inscription., Cnpj: str # Corporate legal ID., Phone: str # Supplier Phone., CellPhone: str # Supplier Cellphone., CorportePhone: str # Supplier Corporate Phone., Email: str # Supplier email., IsActive: bool # Defines if the Supplier is active (`true`) or not (`false`).}\n@returns(200) {Id: int, Name: str, CorporateName: str, StateInscription: str, Cnpj: str, Phone: str, CellPhone: str, CorportePhone: str, Email: str, IsActive: bool} # OK\n\n@endpoint PUT /api/catalog/pvt/supplier/{supplierId}\n@desc Update supplier\n@required {supplierId: int # Supplier's unique numerical identifier., Name: str # Supplier Name., CorporateName: str # Supplier Corporate Name., StateInscription: str # State Inscription., Cnpj: str # Corporate legal ID., Phone: str # Supplier Phone., CellPhone: str # Supplier Cellphone., CorportePhone: str # Supplier Corporate Phone., Email: str # Supplier email., IsActive: bool # Defines if the Supplier is active (`true`) or not (`false`).}\n@returns(200) {Id: int, Name: str, CorporateName: str, StateInscription: str, Cnpj: str, Phone: str, CellPhone: str, CorportePhone: str, Email: str, IsActive: bool} # OK\n\n@endpoint DELETE /api/catalog/pvt/supplier/{supplierId}\n@desc Delete supplier\n@required {supplierId: int # Supplier's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog/pvt/product/{productId}/salespolicy\n@desc Get sales channel by product ID\n@required {productId: int # Product's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint POST /api/catalog/pvt/product/{productId}/salespolicy/{tradepolicyId}\n@desc Associate product with sales channel\n@required {productId: int # Product's unique numerical identifier., tradepolicyId: int # Sales channel's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint DELETE /api/catalog/pvt/product/{productId}/salespolicy/{tradepolicyId}\n@desc Remove product from sales channel\n@required {productId: int # Product's unique numerical identifier., tradepolicyId: int # Sales channel's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/sku/stockkeepingunitidsbysaleschannel\n@desc List all SKUs in a sales channel\n@required {sc: int # Sales channel's unique numerical identifier.}\n@optional {page: int # Page number., pageSize: int # Number of items in the page., onlyAssigned: bool # If set as `false`, it allows the user to decide if the SKUs that are not assigned to a specific sales channel should be also returned.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/products/GetIndexedInfo/{productId}\n@desc Get product indexed information\n@required {productId: str # Product's unique numerical identifier.}\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/commercialcondition/list\n@desc Get all commercial conditions\n@returns(200) OK\n\n@endpoint GET /api/catalog_system/pvt/commercialcondition/{commercialConditionId}\n@desc Get commercial condition\n@required {commercialConditionId: int # Commercial condition unique numerical identifier.}\n@returns(200) {Id: int, Name: str, IsDefault: bool} # OK\n\n@endpoint GET /api/addon/pvt/giftlist/get/{listId}\n@desc Get gift list\n@required {listId: int # Gift list unique numerical identifier.}\n@returns(200) {giftListId: int, name: str, userId: str, fileId: int?, giftListTypeId: int, giftListTypeName: str, giftCardId: int, message: str, urlFolder: str, dateCreated: str, profileSystemUserAddressName: str, profileSystemUserId: str, eventDate: str, eventLocation: str, eventCity: str, eventState: str, telemarketingId: int?, telemarketingObservation: str?, IsPublic: bool, isActive: bool, shipsToOwner: bool, isAddressOk: bool, version: int, giftCardRechargeSkuId: int?, memberNames: str, giftListMembers: [map], giftListSkuIds: [str]?, address: str?, fileUrl: str?} # OK\n\n@endpoint GET /api/catalog/pvt/product/{productId}/language\n@desc Get product translation by product ID\n@required {productId: int # Unique identifier of the product.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/product/{productId}/language\n@desc Create or update product translation by product ID\n@required {productId: int # Unique identifier of the product., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the product., Title: str # Translated title of the product for SEO purposes. When updating, if the field is not provided, the current title will turn to `null`.}\n@optional {Description: str # Translated description of the product. When updating, if the field is not provided, the current description will turn to `null`., MetaTagDescription: str # Translated meta tag description for SEO. When updating, if the field is not provided, the current meta tag description will turn to `null`., DescriptionShort: str # Translated short description of the product. When updating, if the field is not provided, the current short description will turn to `null`., Keywords: str # Product translated keywords for SEO. When updating, if the field is not provided, the current keywords will turn to `null`., LinkId: str # Translated URL-friendly identifier for the product. When updating, if the field is not provided, the current link ID will turn to `null`.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Classic Blue T-Shirt\",\"Title\":\"Classic Blue Tshirt\",\"Description\":\"A comfortable cotton t-shirt in classic blue color\",\"MetaTagDescription\":\"Buy the best classic blue t-shirt made with premium cotton\",\"DescriptionShort\":\"Comfortable cotton t-shirt\",\"Keywords\":\"t-shirt, blue, cotton, casual\",\"LinkId\":\"classic-blue-tshirt\"}\n\n@endpoint GET /api/catalog/pvt/products/{productId}/specification/{specificationId}/language\n@desc Get product specification translation by product ID\n@required {productId: int # Unique identifier of the product., specificationId: int # Unique identifier of the specification.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/products/{productId}/specification/{specificationId}/language\n@desc Create or update product specification translation by product ID\n@required {productId: int # Unique identifier of the product., specificationId: int # Unique identifier of the specification., ProductId: int # Product unique identifier., SpecificationId: int # Specification unique identifier., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the product specification., Value: str # Translated value of the product specification.}\n@optional {Values: [str] # List of the translated product specification value options. Valid for combo, radio and checkbox specification types; nullable for text, multi-line text, number, indexed text and indexed multi-line text specification types.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"ProductId\":2,\"SpecificationId\":23,\"Locale\":\"pt-BR\",\"Name\":\"Material\",\"Value\":\"100% Algodão\",\"Values\":null}\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/language\n@desc Get SKU translation by SKU ID\n@required {skuId: int # Unique identifier of the SKU.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}/language\n@desc Create or update SKU translation by SKU ID\n@required {skuId: int # Unique identifier of the SKU., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the SKU., MeasurementUnit: str # Measurement unit for the SKU. The acceptables values are: \r- `un`: Unit \r- `kg`: Kilogram \r- `g`: Gram \r- `mg`: Milligram \r- `m`: Meter \r- `m²`: Square meter \r- `m³`: Cubic meter \r- `cm`: Centimeter \r- `cm²`: Square centimeter \r- `cm³`: Cubic centimeter \r- `mm`: Millimeter \r- `mm²`: Square millimeter \r- `mm³`: Cubic millimeter \r- `oz`: Ounce \r- `lb`: Pound \r- `ft`: Foot \r- `ft²`: Square foot \r- `ft³`: Cubic foot \r- `in`: Inch \r- `in²`: Square inch \r- `in³`: Cubic inch}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Classic Blue T-Shirt - Size M\",\"MeasurementUnit\":\"un\"}\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}/language\n@desc Get SKU attribute translation by SKU ID\n@required {skuId: int # Unique identifier of the SKU., skuAttributeId: int # Unique identifier of the SKU attribute.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}/attribute/{skuAttributeId}/language\n@desc Create or update SKU attribute translation by SKU ID\n@required {skuId: int # Unique identifier of the SKU., skuAttributeId: int # Unique identifier of the SKU attribute., Id: int # SKU specification attribute unique identifier., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., AttributeName: str # Translated SKU attribute name., AttributeValue: str # Translated SKU attribute value.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Id\":1,\"Locale\":\"en-US\",\"AttributeName\":\"Size\",\"AttributeValue\":\"38\"}\n\n@endpoint GET /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}/language\n@desc Get SKU file translation by SKU ID\n@required {skuId: int # Unique identifier of the SKU., skuFileId: int # Unique identifier of the SKU file.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/stockkeepingunit/{skuId}/file/{skuFileId}/language\n@desc Create or update SKU file translation by SKU ID\n@required {skuId: int # Unique identifier of the SKU., skuFileId: int # Unique identifier of the SKU file., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Label: str # Translated label for the SKU file. When updating, if the field is not provided, it will turn to `null`., Name: str # Translated name of the SKU file., Text: str # Translated text description of the file. When updating, if the field is not provided, it will turn to `null`.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Label\":\"Front view\",\"Name\":\"Product image - front\",\"Text\":\"Front of the tshirt\"}\n\n@endpoint GET /api/catalog/pvt/specificationgroup/{specificationGroupId}/language\n@desc Get specification group translation\n@required {specificationGroupId: int # Unique identifier of the specification group.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/specificationgroup/{specificationGroupId}/language\n@desc Create or update specification group translation\n@required {specificationGroupId: int # Unique identifier of the specification group., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the specification group.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Product Specifications\"}\n\n@endpoint GET /api/catalog/pvt/specification/{specificationId}/language\n@desc Get specification translation\n@required {specificationId: int # Unique identifier of the specification.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/specification/{specificationId}/language\n@desc Create or update specification translation\n@required {specificationId: int # Unique identifier of the specification., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the specification.}\n@optional {Description: str # Translated description of the specification, limited to 15 characters. When updating, if the field is not provided, it will turn to `null`.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Color\",\"Description\":\"Navy blue\"}\n\n@endpoint GET /api/catalog/pvt/specificationvalue/{valueId}/language\n@desc Get specification value translation\n@required {valueId: int # Unique identifier of the specification value.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/specificationvalue/{valueId}/language\n@desc Create or update specification value translation\n@required {valueId: int # Unique identifier of the specification value., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the specification value.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"es-ES\",\"Name\":\"Talla grande\"}\n\n@endpoint GET /api/catalog/pvt/category/{categoryId}/language\n@desc Get category translation\n@required {categoryId: int # Unique identifier of the category.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/category/{categoryId}/language\n@desc Create or update category translation\n@required {categoryId: int # Unique identifier of the category., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the category.}\n@optional {Title: str # Translated title of the category for SEO purposes. When updating, if the field is not provided, it will turn to `null`., Description: str # Translated description of the category. When updating, if the field is not provided, it will turn to `null`., Keywords: str # Category translated keywords for SEO. When updating, if the field is not provided, it will turn to `null`., LinkId: str # Translated URL-friendly identifier for the category. When updating, if the field is not provided, it will turn to `null`.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Men's Clothing\",\"Title\":\"Men's Clothing Fashion Store\",\"Description\":\"Discover our collection of men's clothing\",\"Keywords\":\"men, clothing, fashion, apparel\",\"LinkId\":\"mens-clothing\"}\n\n@endpoint GET /api/catalog/pvt/brand/{brandId}/language\n@desc Get brand translation\n@required {brandId: int # Unique identifier of the brand.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/brand/{brandId}/language\n@desc Create or update brand translation\n@required {brandId: int # Unique identifier of the brand., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the brand.}\n@optional {Text: str # Translated text description of the brand. When updating, if the field is not provided, it will turn to `null`., Keywords: str # Brand translated keywords for SEO. When updating, if the field is not provided, it will turn to `null`., SiteTitle: str # Translated site title for the brand. When updating, if the field is not provided, it will turn to `null`., LinkId: str # Translated URL-friendly identifier for the brand. When updating, if the field is not provided, it will turn to `null`.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Premium Apparel Co.\",\"Text\":\"Leading manufacturer of premium clothing\",\"Keywords\":\"premium, apparel, clothing, brand\",\"SiteTitle\":\"Premium Apparel Co. | Quality Clothing\",\"LinkId\":\"premium-apparel-co\"}\n\n@endpoint GET /api/catalog/pvt/attachment/{attachmentId}/language\n@desc Get attachment translation\n@required {attachmentId: int # Unique identifier of the attachment.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/attachment/{attachmentId}/language\n@desc Create or update attachment translation\n@required {attachmentId: int # Unique identifier of the attachment., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the attachment.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Customize your tshirt\"}\n\n@endpoint GET /api/catalog/pvt/skuservicetype/{skuServiceTypeId}/language\n@desc Get SKU service type translation\n@required {skuServiceTypeId: int # Unique identifier of the SKU service type.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/skuservicetype/{skuServiceTypeId}/language\n@desc Create or update SKU service type translation\n@required {skuServiceTypeId: int # Unique identifier of the SKU service type., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the SKU service type.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"pt-BR\",\"Name\":\"Garantia estendida\"}\n\n@endpoint GET /api/catalog/pvt/skuservice/{skuserviceId}/language\n@desc Get SKU service translation\n@required {skuserviceId: int # Unique identifier of the SKU service.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/skuservice/{skuserviceId}/language\n@desc Create or update SKU service translation\n@required {skuserviceId: int # Unique identifier of the SKU service., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the SKU service.}\n@optional {Text: str # Translated description of the SKU service. When updating, if the field is not provided, it will turn to `null`.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Extended warranty\",\"Text\":\"1 year\"}\n\n@endpoint GET /api/catalog/pvt/skuservicevalue/{skuServiceValueId}/language\n@desc Get SKU service value translation\n@required {skuServiceValueId: int # Unique identifier of the SKU service value.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/skuservicevalue/{skuServiceValueId}/language\n@desc Create or update SKU service value translation\n@required {skuServiceValueId: int # Unique identifier of the SKU service value., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the SKU service value.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Extended warranty 1 year\"}\n\n@endpoint GET /api/catalog/pvt/collection/{collectionId}/language\n@desc Get collection translation\n@required {collectionId: int # Unique identifier of the collection.}\n@optional {locale: str # Code used to filter translations by a given language. When omitted, all configured languages are returned. The format follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil).}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/collection/{collectionId}/language\n@desc Create or update collection translation\n@required {collectionId: int # Unique identifier of the collection., Locale: str # The locale code for this translation. It follows the IETF BCP 47 standard, such as 'en-US' for English (United States), 'en-ES' for Spanish (Spain), or 'pt-BR' for Portuguese (Brazil)., Name: str # Translated name of the collection.}\n@optional {Description: str # Translated description of the collection. When updating, if the field is not provided, it will turn to `null`., LinkId: str # Translated URL-friendly identifier for the collection. When updating, if the field is not provided, it will turn to `null`.}\n@returns(201) Created\n@errors {400: Bad Request, 404: Not Found, 409: Conflict}\n@example_request {\"Locale\":\"en-US\",\"Name\":\"Summer Collection\",\"Description\":\"Discover our latest summer styles\",\"LinkId\":\"summer-collection\"}\n\n@endpoint POST /api/catalog/pvt/assortment\n@desc Create product assortment\n@required {name: str # Assortment's unique name at the merchant level.}\n@returns(201) {Id: int, Name: str, CreatedAt: str(date-time), UpdatedAt: str(date-time), IncludedCollections: [int], ExcludedCollections: [int]} # Created\n@errors {422: Unprocessable Entity}\n@example_request {\"name\":\"Stationery\"}\n\n@endpoint GET /api/catalog/pvt/assortment\n@desc Get all product assortments\n@optional {name: str # Assortment name., after: int(int32) # Cursor indicating the assortment ID after which the next page of results must start. Useful for cursor-based pagination., size: int(int32) # Maximum number of assortments returned in the response when using cursor-based pagination., collectionId: int(int32) # Filters the result to return only assortments that reference the specified collection ID, either as an included or as an excluded collection.}\n@returns(200) {TotalRows: int, Data: [map], Size: int} # OK\n\n@endpoint GET /api/catalog/pvt/assortment/{productAssortmentID}\n@desc Get product assortment by ID\n@required {productAssortmentID: int(int32) # Product assortment's unique numerical identifier.}\n@returns(200) {Id: int, Name: str, CreatedAt: str(date-time), UpdatedAt: str(date-time), IncludedCollections: [int], ExcludedCollections: [int]} # OK\n@errors {404: Not Found}\n\n@endpoint PUT /api/catalog/pvt/assortment/{productAssortmentID}\n@desc Update product assortment\n@required {productAssortmentID: int(int32) # Product assortment's unique numerical identifier., name: str # Assortment's new unique name. Must not collide with existing assortments at the merchant level.}\n@returns(200) {Id: int, Name: str, CreatedAt: str(date-time), UpdatedAt: str(date-time), IncludedCollections: [int], ExcludedCollections: [int]} # OK\n@errors {404: Not Found, 422: Unprocessable Entity}\n@example_request {\"name\":\"Low-cost electronics\"}\n\n@endpoint DELETE /api/catalog/pvt/assortment/{productAssortmentID}\n@desc Delete product assortment\n@required {productAssortmentID: int(int32) # Product assortment's unique numerical identifier.}\n@returns(200) OK\n@errors {400: Bad Request, 404: Not Found}\n\n@endpoint POST /api/catalog/pvt/assortment/{productAssortmentID}/included-collections/{collectionID}\n@desc Add included collection to product assortment\n@required {productAssortmentID: int(int32) # Product assortment's unique numerical identifier., collectionID: int(int32) # Collection's unique numerical identifier.}\n@returns(200) {assortmentId: int, collectionId: int} # OK\n@errors {409: Conflict}\n\n@endpoint DELETE /api/catalog/pvt/assortment/{productAssortmentID}/included-collections/{collectionID}\n@desc Remove included collection from product assortment\n@required {productAssortmentID: int(int32) # Product assortment's unique numerical identifier., collectionID: int(int32) # Collection's unique numerical identifier.}\n@returns(200) OK\n@errors {404: Not Found}\n\n@endpoint POST /api/catalog/pvt/assortment/{productAssortmentID}/excluded-collections/{collectionID}\n@desc Add excluded collection to product assortment\n@required {productAssortmentID: int(int32) # Product assortment's unique numerical identifier., collectionID: int(int32) # Collection's unique numerical identifier.}\n@returns(200) {assortmentId: int, collectionId: int} # OK\n@errors {409: Conflict}\n\n@endpoint DELETE /api/catalog/pvt/assortment/{productAssortmentID}/excluded-collections/{collectionID}\n@desc Remove excluded collection from product assortment\n@required {productAssortmentID: int(int32) # Product assortment's unique numerical identifier., collectionID: int(int32) # Collection's unique numerical identifier.}\n@returns(200) OK\n@errors {404: Not Found}\n\n@end\n"}}