{"openapi":"3.0.0","info":{"title":"SellerLogic User API","description":"\n\n<h3>Access token</h3>\n<h4>Get request</h4>\n<small>\n<pre>\n<strong>POST</strong>\nhttps://auth.sellerlogic.com/oauth2/token\n<strong>Headers</strong>\nContent-Type: application/json\nAuthorization: Basic base64_encode(clientId:secret)\n<strong>Data</strong>\n{'grant_type': 'client_credentials'}\n</pre>\n</small>\n<h4>Get response</h4>\n<small>\n<pre>\n{'token_type': 'Bearer','expires_in': 3600,'access_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImUzZjU2NTJiYTM1MTI3ZGE2ZDgwNjcxZDRhMmEwMWVhZTUyM2NkNmIwMjRjNjc4NTY0YmY4MmY1OGIwNGZkMzUwZjg0MDE2ZDc0YTgzNjBlIn0.eyJhdWQiOiJ0ZXN0Y2xpZW50IiwianRpIjoiZTNmNTY1MmJhMzUxMjdkYTZkODA2NzFkNGEyYTAxZWFlNTIzY2Q2YjAyNGM2Nzg1NjRiZjgyZjU4YjA0ZmQzNTBmODQwMTZkNzRhODM2MGUiLCJpYXQiOjE1NzI1MTEzMDgsIm5iZiI6MTU3MjUxMTMwOCwiZXhwIjoxNTcyNTE0OTA4LCJzdWIiOiIyNDE2Iiwic2NvcGVzIjpbXX0.W85JMAWAGk6GRHu6xIRyl15LKdxJ_i0GoQVoihvx2dZ08wsZebAiW78ICrgVlhcWSB2dWa9XX6Qgxw4NZxuD0xNVqb7agWv32IGtwqRx6Bvjr7DoEfMmUUy_EA97gIxiZCTJ7wF4Ybc3Ld7zDo2qMbe0FSfcsQszTCQqlkLlDGruFY3Av5B9UPRyy2awfS9suvJpYQZPUrnJCq0dl9gj-kD8mDoFXTCovbEpjF-KwWQQkjkYXWN-O9LkyAVK585zUoaOY0-UQ1K5rQgIHdpDdA0CfY_xE8ehsf8__oTpQw-S0l4wsJ0u-9zIu6W-bkVvPwtIACctLCIY17E7Qh9yNA'}\n</pre>\n</small>\n<h4>How to use</h4>\n<span>An access token should be provided in headers for each API request.</span>\n<small>\n<pre>\nAuthorization: Bearer {accessToken}\n</pre>\n</small>\n","version":"2.0"},"paths":{"/v2/amazon-product-competitor":{"get":{"tags":["Repricer"],"summary":"Retrieves the collection of Competitors resources.","description":"AmazonProductCompetitorController implements the REST actions for AmazonProductCompetitor model.","parameters":[{"name":"amazon_product_id","in":"query","description":"Amazon product id - required","required":true,"schema":{"type":"integer"}},{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"all","in":"query","description":"Show all records with pager [1,0]","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Retrieves the collection of Competitors resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of competitor offers matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of AmazonProductCompetitor resources.","type":"array","items":{"$ref":"#/components/schemas/AmazonProductCompetitor"}}},"type":"object"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method Not Allowed"}},"security":[{"oauth2":[]}]}},"/v2/amazon-product":{"get":{"tags":["Repricer"],"summary":"Retrieve the collection of AmazonProduct resources.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}},{"name":"id","in":"query","description":"ID","required":false,"schema":{"type":"string"}},{"name":"sku","in":"query","description":"SKU","required":false,"schema":{"type":"string"}},{"name":"asin","in":"query","description":"ASIN","required":false,"schema":{"type":"string"}},{"name":"product_group_id","in":"query","description":"Product group ID","required":false,"schema":{"type":"string"}},{"name":"optimization_active","in":"query","description":"Optimization active [1,0]","required":false,"schema":{"type":"integer"}},{"name":"marketplace_id","in":"query","description":"Marketplace ID","required":false,"schema":{"type":"string"}},{"name":"seller_id","in":"query","description":"Seller ID","required":false,"schema":{"type":"string"}},{"name":"offerType","in":"query","description":"Offer type ['B2B'|'B2C'].","required":false,"schema":{"type":"string","enum":["B2B","B2C"]}}],"responses":{"200":{"description":"Retrieve the collection of AmazonProduct resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of products matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of AmazonProduct resources.","type":"array","items":{"$ref":"#/components/schemas/AmazonProduct"}}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"}},"security":[{"oauth2":[]}]}},"/v2/amazon-product/{id}":{"get":{"tags":["Repricer"],"summary":"View the AmazonProduct resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"View the AmazonProduct resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmazonProduct"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]},"put":{"tags":["Repricer"],"summary":"Update the AmazonProduct resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAmazonProductForm"}}}},"responses":{"200":{"description":"AmazonProduct resource is updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmazonProduct"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]}},"/v2/amazon-product/update-by-sku":{"put":{"tags":["Repricer"],"summary":"Update the AmazonProduct resource by SKU.","description":"AmazonProductController implements the REST actions for AmazonProduct model.","parameters":[{"name":"sku","in":"query","description":"SKU","required":true,"schema":{"type":"string"}},{"name":"marketplace","in":"query","description":"Marketplace","required":true,"schema":{"type":"string"}},{"name":"sellerId","in":"query","description":"Seller ID","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAmazonProductForm"}}}},"responses":{"200":{"description":"AmazonProduct resource is updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmazonProduct"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]}},"/v2/amazon-product-package-dimension":{"get":{"tags":["Lost&Found"],"summary":"Retrieves the collection of AmazonProductPackageDimension resources.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}},{"name":"id","in":"query","description":"Id","required":false,"schema":{"type":"string"}},{"name":"has_dimensions","in":"query","description":"Shows only filled dimensions","required":false,"schema":{"type":"integer"}},{"name":"has_dimensions_amazon","in":"query","description":"Shows only filled amazon filled dimensions","required":false,"schema":{"type":"integer"}},{"name":"asin","in":"query","description":"ASIN","required":false,"schema":{"type":"string"}},{"name":"sku","in":"query","description":"SKU","required":false,"schema":{"type":"string"}},{"name":"fnsku","in":"query","description":"FNSKU","required":false,"schema":{"type":"string"}},{"name":"title","in":"query","description":"Title","required":false,"schema":{"type":"string"}},{"name":"is_archived","in":"query","description":"Is archived","required":false,"schema":{"type":"integer"}},{"name":"amazon_marketplace_id","in":"query","description":"Amazon marketplace ID","required":false,"schema":{"type":"string"}},{"name":"amazon_zone_id","in":"query","description":"Amazon zone ID","required":false,"schema":{"type":"string"}},{"name":"amazon_customer_account_id","in":"query","description":"Amazon customer account ID","required":false,"schema":{"type":"string"}},{"name":"created_at","in":"query","description":"Date of creation","required":false,"schema":{"type":"string"}},{"name":"updated_at","in":"query","description":"Date of update","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieves the collection of AmazonProductPackageDimension resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of dimension rows matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of AmazonProductPackageDimension resources.","type":"array","items":{"$ref":"#/components/schemas/AmazonProductPackageDimension"}}},"type":"object"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method Not Allowed"}},"security":[{"oauth2":[]}]}},"/v2/amazon-product-package-dimension/{id}":{"get":{"tags":["Lost&Found"],"summary":"View the AmazonProductPackageDimension resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"View the AmazonProductPackageDimension resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmazonProductPackageDimension"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]},"put":{"tags":["Lost&Found"],"summary":"Update the AmazonProductPackageDimension resource","description":"AmazonProductPackageDimensionController implements the REST actions for AmazonProductPackageDimension model.","parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAmazonProductPackageDimensionForm"}}}},"responses":{"200":{"description":"AmazonProductPackageDimension resource is updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AmazonProductPackageDimension"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method Not Allowed"},"422":{"description":"Data Validation Failed"}},"security":[{"oauth2":[]}]}},"/v2/amazon-product-price-change":{"get":{"tags":["Repricer"],"summary":"Retrieve the collection of AmazonProductPriceChange resources.","description":"Deprecated. Use `/v2/price-history` and `/v2/price-history/last-twenty-prices` instead.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}},{"name":"amazon_product_id","in":"query","description":"Amazon Product ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve the collection of AmazonProductPriceChange resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of price-change records matching the filter.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of AmazonProductPriceChange records.","type":"array","items":{"$ref":"#/components/schemas/AmazonProductPriceChange"}}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"}},"deprecated":true,"security":[{"oauth2":[]}]}},"/v2/amazon-product-stock":{"get":{"tags":["Repricer"],"summary":"Retrieve the collection of AmazonProductStock resources.","description":"AmazonProductStockController implements the REST actions for AmazonProductStock model.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}},{"name":"id","in":"query","description":"ID","required":false,"schema":{"type":"string"}},{"name":"sku","in":"query","description":"SKU","required":false,"schema":{"type":"string"}},{"name":"marketplace_id","in":"query","description":"Marketplace ID","required":false,"schema":{"type":"string"}},{"name":"seller_id","in":"query","description":"Seller ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieve the collection of AmazonProductStock resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of stock rows matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of AmazonProductStock records.","type":"array","items":{"$ref":"#/components/schemas/AmazonProductStock"}}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"}},"security":[{"oauth2":[]}]}},"/v2/optimization":{"get":{"tags":["Repricer"],"summary":"Retrieve the collection of Optimization resources.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Retrieve the collection of Optimization resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of optimizations matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of polymorphic Optimization resources.","type":"array","items":{"$ref":"#/components/schemas/Optimization"}}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"}},"security":[{"oauth2":[]}]},"post":{"tags":["Repricer"],"summary":"Create the Optimization resource.","requestBody":{"description":"Polymorphic strategy payload. The exact required fields depend on the chosen strategy schema.","required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/optimizationStrategyBuyBox"},{"$ref":"#/components/schemas/optimizationStrategyDailyPush"},{"$ref":"#/components/schemas/optimizationStrategyManual"},{"$ref":"#/components/schemas/optimizationStrategyPosition"},{"$ref":"#/components/schemas/optimizationStrategyProfit"},{"$ref":"#/components/schemas/optimizationStrategyPush"},{"$ref":"#/components/schemas/optimizationStrategySamePrice"},{"$ref":"#/components/schemas/optimizationStrategySimple"},{"$ref":"#/components/schemas/optimizationStrategyCrossProduct"},{"$ref":"#/components/schemas/optimizationStrategyElasticPricing"},{"$ref":"#/components/schemas/optimizationStrategyB2bPriceDiscount"}]}}}},"responses":{"200":{"description":"Optimization resource is created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Optimization"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]}},"/v2/optimization/{id}":{"get":{"tags":["Repricer"],"summary":"View the Optimization resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"View the Optimization resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Optimization"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]},"put":{"tags":["Repricer"],"summary":"Update the Optimization resource","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"description":"Polymorphic strategy payload. The exact required fields depend on the chosen strategy schema.","required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/optimizationStrategyBuyBox"},{"$ref":"#/components/schemas/optimizationStrategyDailyPush"},{"$ref":"#/components/schemas/optimizationStrategyManual"},{"$ref":"#/components/schemas/optimizationStrategyPosition"},{"$ref":"#/components/schemas/optimizationStrategyProfit"},{"$ref":"#/components/schemas/optimizationStrategyPush"},{"$ref":"#/components/schemas/optimizationStrategySamePrice"},{"$ref":"#/components/schemas/optimizationStrategySimple"},{"$ref":"#/components/schemas/optimizationStrategyCrossProduct"},{"$ref":"#/components/schemas/optimizationStrategyElasticPricing"},{"$ref":"#/components/schemas/optimizationStrategyB2bPriceDiscount"}]}}}},"responses":{"200":{"description":"Optimization resource is updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Optimization"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]},"delete":{"tags":["Repricer"],"summary":"Delete the Optimization resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Optimization resource is deleted."},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"}},"security":[{"oauth2":[]}]}},"/v2/optimization/update-by-sku":{"put":{"tags":["Repricer"],"summary":"Update the optimization resource by SKU.","description":"OptimizationController implements the REST actions for Optimization model.","parameters":[{"name":"sku","in":"query","description":"SKU","required":true,"schema":{"type":"string"}},{"name":"marketplace","in":"query","description":"Marketplace","required":true,"schema":{"type":"string"}},{"name":"sellerId","in":"query","description":"Seller ID","required":true,"schema":{"type":"string"}},{"name":"offerType","in":"query","description":"Offer type ['B2B'|'B2C'].","required":true,"schema":{"type":"string","default":"B2C","enum":["B2B","B2C"]}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/optimizationStrategyBuyBox"},{"$ref":"#/components/schemas/optimizationStrategyDailyPush"},{"$ref":"#/components/schemas/optimizationStrategyManual"},{"$ref":"#/components/schemas/optimizationStrategyPosition"},{"$ref":"#/components/schemas/optimizationStrategyProfit"},{"$ref":"#/components/schemas/optimizationStrategyPush"},{"$ref":"#/components/schemas/optimizationStrategySamePrice"},{"$ref":"#/components/schemas/optimizationStrategySimple"},{"$ref":"#/components/schemas/optimizationStrategyCrossProduct"},{"$ref":"#/components/schemas/optimizationStrategyElasticPricing"},{"$ref":"#/components/schemas/optimizationStrategyB2bPriceDiscount"}]}}}},"responses":{"200":{"description":"Optimization resource is updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Optimization"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]}},"/v2/optimization-template":{"get":{"tags":["Repricer"],"summary":"Retrieves the collection of OptimizationTemplate resources.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}},{"name":"id","in":"query","description":"ID","required":false,"schema":{"type":"integer"}},{"name":"title","in":"query","description":"Title","required":false,"schema":{"type":"string"}},{"name":"optimization_id","in":"query","description":"Optimization ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieves the collection of OptimizationTemplate resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of templates matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of OptimizationTemplate resources.","type":"array","items":{"$ref":"#/components/schemas/OptimizationTemplate"}}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"}},"security":[{"oauth2":[]}]},"post":{"tags":["Repricer"],"summary":"Create the OptimizationTemplate resource.","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["title","optimization_id"],"properties":{"title":{"description":"Human-readable template title (max 100 chars).","type":"string","maxLength":100},"optimization_id":{"description":"Existing Optimization id this template wraps.","type":"integer"}},"type":"object"}}}},"responses":{"201":{"description":"OptimizationTemplate resource is created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationTemplate"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]}},"/v2/optimization-template/{id}":{"get":{"tags":["Repricer"],"summary":"Get the OptimizationTemplate resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OptimizationTemplate resource is updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationTemplate"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]},"put":{"tags":["Repricer"],"summary":"Update the OptimizationTemplate resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["title","optimization_id"],"properties":{"title":{"description":"Human-readable template title (max 100 chars).","type":"string","maxLength":100},"optimization_id":{"description":"Existing Optimization id this template wraps.","type":"integer"},"resetNow":{"description":"1 to immediately wipe per-product limit progress for products using this template after the update.","type":"integer","enum":[0,1]}},"type":"object"}}}},"responses":{"200":{"description":"OptimizationTemplate resource is updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizationTemplate"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]},"delete":{"tags":["Repricer"],"summary":"Delete the OptimizationTemplate resource.","description":"OptimizationTemplateController implements the REST actions for OptimizationTemplate model.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"OptimizationTemplate resource is deleted."},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"}},"security":[{"oauth2":[]}]}},"/v2/price-history/last-twenty-prices":{"get":{"tags":["Repricer"],"summary":"Retrieve the last 20 price changes for a product.","parameters":[{"name":"productId","in":"query","description":"Product ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"The last 20 price changes for the product.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LastTwentyPricesResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"},"500":{"description":"Price History service is unavailable"}},"security":[{"oauth2":[]}]}},"/v2/price-history":{"get":{"tags":["Repricer"],"summary":"Retrieve the aggregated price history timeline for a product.","parameters":[{"name":"productId","in":"query","description":"Product ID","required":true,"schema":{"type":"integer"}},{"name":"dateStart","in":"query","description":"Start date (YYYY-MM-DD)","required":true,"schema":{"type":"string","format":"date"}},{"name":"dateEnd","in":"query","description":"End date (YYYY-MM-DD)","required":true,"schema":{"type":"string","format":"date"}},{"name":"period","in":"query","description":"Aggregation period","required":true,"schema":{"type":"string","enum":["hour","day","week","month"]}},{"name":"offerType","in":"query","description":"Offer type","required":true,"schema":{"type":"string","enum":["B2C","B2B"]}}],"responses":{"200":{"description":"Aggregated price history timeline.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceHistoryTimelineResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"},"500":{"description":"Price History service is unavailable"}},"security":[{"oauth2":[]}]}},"/v2/product-group":{"get":{"tags":["Repricer"],"summary":"Retrieve the collection of ProductGroup resources.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}},{"name":"id","in":"query","description":"ID","required":false,"schema":{"type":"integer"}},{"name":"title","in":"query","description":"Title","required":false,"schema":{"type":"string"}},{"name":"default_optimization_template_id","in":"query","description":"Default optimization template ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieves the collection of ProductGroup resource.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of product groups matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of ProductGroup resources.","type":"array","items":{"$ref":"#/components/schemas/ProductGroup"}}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"}},"security":[{"oauth2":[]}]},"post":{"tags":["Repricer"],"summary":"Create the ProductGroup resource.","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["title"],"properties":{"title":{"description":"Group title (max 100 chars). Trimmed and unique across the customer.","type":"string","maxLength":100},"default_optimization_template_id":{"description":"Default OptimizationTemplate id applied to products that join this group.","type":"integer","nullable":true}},"type":"object"}}}},"responses":{"201":{"description":"ProductGroup resource is created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductGroup"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]}},"/v2/product-group/{id}":{"get":{"tags":["Repricer"],"summary":"View the ProductGroup resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"View the ProductGroup resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductGroup"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]},"put":{"tags":["Repricer"],"summary":"Update the ProductGroup resource.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["title"],"properties":{"title":{"description":"Group title (max 100 chars). Trimmed and unique across the customer.","type":"string","maxLength":100},"default_optimization_template_id":{"description":"Default OptimizationTemplate id applied to products that join this group.","type":"integer","nullable":true}},"type":"object"}}}},"responses":{"200":{"description":"ProductGroup resource is updated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductGroup"}}}},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]},"delete":{"tags":["Repricer"],"summary":"Delete the ProductGroup resource.","description":"ProductGroupController implements the REST actions for ProductGroup model.","parameters":[{"name":"id","in":"path","description":"ID","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"ProductGroup resource is deleted."},"400":{"description":"Bad request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method not allowed"},"422":{"description":"Data validation failed"}},"security":[{"oauth2":[]}]}},"/v2/product-import":{"get":{"tags":["Repricer"],"summary":"Retrieves the collection of ProductImport resources.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"sort","in":"query","description":"Sort by column [{column}, -{column}]","required":false,"schema":{"type":"string"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}},{"name":"id","in":"query","description":"Id","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Status","required":false,"schema":{"type":"string"}},{"name":"count_products","in":"query","description":"Count products","required":false,"schema":{"type":"string"}},{"name":"count_errors","in":"query","description":"Count errors","required":false,"schema":{"type":"string"}},{"name":"count_imported","in":"query","description":"Count imported","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieves the collection of ProductImport resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of jobs matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of ProductImport jobs.","type":"array","items":{"$ref":"#/components/schemas/ProductImport"}}},"type":"object"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method Not Allowed"}},"security":[{"oauth2":[]}]}},"/v2/product-import/{id}":{"get":{"tags":["Repricer"],"summary":"View the ProductImportExtended resource include errors","parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"View the ProductImportExtended resource include errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductImportExtended"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method Not Allowed"},"422":{"description":"Data Validation Failed"}},"security":[{"oauth2":[]}]},"delete":{"tags":["Repricer"],"parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"ProductImport resource is deleted."},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method Not Allowed"}},"security":[{"oauth2":[]}]}},"/v2/product-import/upload":{"post":{"tags":["Repricer"],"summary":"Upload import file","description":"ProductImportController implements the REST actions for ProductImport model.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"required":["file"],"properties":{"file":{"description":"Product import file (CSV or TXT) to upload.","type":"string","format":"binary"}},"type":"object"}}}},"responses":{"200":{"description":"Product file is uploaded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductImport"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method Not Allowed"},"422":{"description":"Data Validation Failed"}},"security":[{"oauth2":[]}]}},"/v2/tag":{"get":{"tags":["Repricer"],"summary":"Retrieves the collection of Tag resources.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}},{"name":"all","in":"query","description":"Show all records with pager [1,0]","required":false,"schema":{"type":"string"}},{"name":"id","in":"query","description":"Id","required":false,"schema":{"type":"string"}},{"name":"title","in":"query","description":"Title","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Retrieves the collection of Tags resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of tags matching the filters.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of Tag resources.","type":"array","items":{"$ref":"#/components/schemas/Tag"}}},"type":"object"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method Not Allowed"}},"security":[{"oauth2":[]}]},"post":{"tags":["Repricer"],"summary":"Create the Tag resource","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["title","color"],"properties":{"title":{"description":"Display name. Unique across the customer (case-insensitive).","type":"string","maxLength":255,"minLength":3},"color":{"description":"Hex color code in #RRGGBB format (exactly 7 characters).","type":"string","maxLength":7,"minLength":7}},"type":"object"}}}},"responses":{"201":{"description":"Tag resource is created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method Not Allowed"},"422":{"description":"Data Validation Failed"}},"security":[{"oauth2":[]}]}},"/v2/tag/{id}":{"get":{"tags":["Repricer"],"summary":"View the Tag resource","parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"View the Tag resource","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method Not Allowed"},"422":{"description":"Data Validation Failed"}},"security":[{"oauth2":[]}]},"put":{"tags":["Repricer"],"summary":"Update the Tag resource","parameters":[{"name":"id","in":"path","description":"Tag id to update.","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["title","color"],"properties":{"title":{"description":"Display name. Unique across the customer (case-insensitive).","type":"string","maxLength":255,"minLength":3},"color":{"description":"Hex color code in #RRGGBB format (exactly 7 characters).","type":"string","maxLength":7,"minLength":7}},"type":"object"}}}},"responses":{"200":{"description":"Resource is updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method Not Allowed"},"422":{"description":"Data Validation Failed"}},"security":[{"oauth2":[]}]},"delete":{"tags":["Repricer"],"summary":"Delete Tag resource","description":"TagController implements the REST actions for Tag model.","parameters":[{"name":"id","in":"path","description":"Id","required":true,"schema":{"type":"number"}}],"responses":{"204":{"description":"Tag resource is deleted."},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"404":{"description":"Not found"},"405":{"description":"Method Not Allowed"}},"security":[{"oauth2":[]}]}},"/v2/timezone":{"get":{"tags":["Repricer"],"summary":"Retrieves the collection of Timezone resources.","description":"TimezoneController implements the REST actions for Timezone model.","parameters":[{"name":"page","in":"query","description":"Page number","required":false,"schema":{"type":"integer"}},{"name":"pageSize","in":"query","description":"Page size [1,100]","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Retrieves the collection of Timezones resources.","content":{"application/json":{"schema":{"required":["totalCount","pageCount","currentPage","pageSize","data"],"properties":{"totalCount":{"description":"Total number of timezones.","type":"integer"},"pageCount":{"description":"Total number of pages.","type":"integer"},"currentPage":{"description":"Current page number (1-based).","type":"integer"},"pageSize":{"description":"Page size used for the response.","type":"integer"},"data":{"description":"Page of Timezone resources.","type":"array","items":{"$ref":"#/components/schemas/Timezone"}}},"type":"object"}}}},"400":{"description":"Bad Request"},"401":{"description":"Invalid token supplied"},"405":{"description":"Method Not Allowed"}},"security":[{"oauth2":[]}]}}},"components":{"schemas":{"UpdateAmazonProductForm":{"description":"Request body for updating an Amazon product. All fields are optional from a documentation standpoint; `tax_amount` and `profit_type` are validated as required at runtime, plus min/max prices become required when the corresponding B2B/B2C offer exists. The `resetOfferB2B` / `resetOfferB2C` flags can wipe one offer (but not both) — the form rejects resetting the currently active offer.","required":["profit_type","tax_amount"],"properties":{"product_group_b2b_id":{"description":"Product group id for the B2B offer (must exist when > 0).","type":"integer","nullable":true},"product_group_b2c_id":{"description":"Product group id for the B2C offer (must exist when > 0).","type":"integer","nullable":true},"optimization_template_b2b_id":{"description":"OptimizationTemplate id for the B2B offer (must exist when > 0).","type":"integer","nullable":true},"optimization_template_b2c_id":{"description":"OptimizationTemplate id for the B2C offer (must exist when > 0).","type":"integer","nullable":true},"optimization_b2b_id":{"description":"Optimization id for the B2B offer (must exist when > 0).","type":"integer","nullable":true},"optimization_b2c_id":{"description":"Optimization id for the B2C offer (must exist when > 0).","type":"integer","nullable":true},"comments":{"description":"Free-form seller comments.","type":"string","nullable":true},"optimization_active_b2b":{"description":"Activate (1) or deactivate (0) optimization for the B2B offer. Activation requires either an optimization id or template id.","type":"integer","enum":[0,1]},"optimization_active_b2c":{"description":"Activate (1) or deactivate (0) optimization for the B2C offer. Activation requires either an optimization id or template id.","type":"integer","enum":[0,1]},"resetOfferB2C":{"description":"1 to reset (delete) the B2C offer in SellerLogic. Cannot be set together with `resetOfferB2B`. The deleted offer may be re-uploaded from Amazon settings within ~2 hours.","type":"integer","enum":[0,1]},"resetOfferB2B":{"description":"1 to reset (delete) the B2B offer in SellerLogic. Cannot be set together with `resetOfferB2C`.","type":"integer","enum":[0,1]},"tax_amount":{"description":"VAT/tax percent. Always required.","type":"number","format":"float","minimum":0},"min_price_b2b":{"description":"Min price for the B2B offer. Required when the B2B offer exists.","type":"number","format":"float","minimum":0,"nullable":true},"min_price_b2c":{"description":"Min price for the B2C offer. Required when the B2C offer exists.","type":"number","format":"float","minimum":0,"nullable":true},"max_price_b2b":{"description":"Max price for the B2B offer. Required when the B2B offer exists. Must be greater than `min_price_b2b`.","type":"number","format":"float","minimum":0,"nullable":true},"max_price_b2c":{"description":"Max price for the B2C offer. Required when the B2C offer exists. Must be greater than `min_price_b2c`.","type":"number","format":"float","minimum":0,"nullable":true},"min_price_type_b2b":{"description":"How min price is set for B2B.","type":"string","enum":["VALUE","AUTO"],"nullable":true},"min_price_type_b2c":{"description":"How min price is set for B2C.","type":"string","enum":["VALUE","AUTO"],"nullable":true},"min_price_auto_type_b2b":{"description":"When min_price_type_b2b=AUTO: VALUE adds an absolute amount, PERCENT a percentage.","type":"string","enum":["VALUE","PERCENT"],"nullable":true},"min_price_auto_type_b2c":{"description":"When min_price_type_b2c=AUTO: VALUE adds an absolute amount, PERCENT a percentage.","type":"string","enum":["VALUE","PERCENT"],"nullable":true},"max_price_type_b2b":{"description":"How max price is set for B2B.","type":"string","enum":["VALUE","AUTO"],"nullable":true},"max_price_type_b2c":{"description":"How max price is set for B2C.","type":"string","enum":["VALUE","AUTO"],"nullable":true},"max_price_auto_type_b2b":{"description":"When max_price_type_b2b=AUTO: VALUE adds an absolute amount, PERCENT a percentage.","type":"string","enum":["VALUE","PERCENT"],"nullable":true},"max_price_auto_type_b2c":{"description":"When max_price_type_b2c=AUTO: VALUE adds an absolute amount, PERCENT a percentage.","type":"string","enum":["VALUE","PERCENT"],"nullable":true},"stand_alone_price_b2b":{"description":"Stand-alone price for B2B (used when no competitors are present).","type":"number","format":"float","minimum":0,"nullable":true},"stand_alone_price_b2c":{"description":"Stand-alone price for B2C (used when no competitors are present).","type":"number","format":"float","minimum":0,"nullable":true},"recommended_retail_price":{"description":"Recommended retail price (RRP).","type":"number","format":"float","minimum":0,"nullable":true},"standard_price":{"description":"Former retail price ('Standard' / strike-through).","type":"number","format":"float","minimum":0,"nullable":true},"use_sale_price":{"description":"1 to use the strike-through (sale) price.","type":"integer","enum":[0,1]},"profit_type":{"description":"How profit is computed: `CALCULATE` (auto from costs) or `MANUAL`. Always required.","type":"string","enum":["CALCULATE","MANUAL"]},"vendor_price":{"description":"Cost price paid to the vendor. Becomes required (>=0.01) when AUTO min/max price or PROFIT strategy is in use.","type":"number","format":"float","minimum":0,"nullable":true},"order_fee":{"description":"Per-order fee. Becomes required (>=0.01) under the same conditions as `vendor_price`.","type":"number","format":"float","minimum":0,"nullable":true},"fulfilment_fee":{"description":"FBA fulfilment fee. Becomes required (>=0.01) for FBA stock under the same conditions as `vendor_price`.","type":"number","format":"float","minimum":0,"nullable":true},"other_fee":{"description":"Other (custom) per-unit fee.","type":"number","format":"float","minimum":0,"nullable":true},"tagIds":{"description":"Ids of tags to associate with the product. Limited by Tag::MAX_TAGS_FOR_THE_PRODUCT.","type":"array","items":{"type":"integer"}},"discountsB2B":{"description":"Quantity-based discount tiers for the B2B offer (max 5).","type":"array","items":{"$ref":"#/components/schemas/AmazonProductOfferDiscount"}},"ultra_fast_price_change":{"description":"Configuration flag that allows ultra-fast price change. The flag alone does not mean the feature is active — see AmazonProduct.isUltraFastPriceChangeActive. Subject to subscription limits.","type":"integer","enum":[0,1]}},"type":"object"},"UpdateAmazonProductPackageDimensionForm":{"description":"Request body for updating Amazon product package dimensions. All dimension fields (height/width/length/weight + their units) are mutually-required: as soon as any of them is provided in the request OR is already set on the row, the whole group must be filled with values > 0.","required":["is_archived"],"properties":{"height":{"description":"Package height (in `unit_of_height` units). Required as part of the dimension group when any related field is filled.","type":"number","format":"float","minimum":0,"nullable":true},"width":{"description":"Package width (in `unit_of_width` units). Required as part of the dimension group when any related field is filled.","type":"number","format":"float","minimum":0,"nullable":true},"length":{"description":"Package length (in `unit_of_length` units). Required as part of the dimension group when any related field is filled.","type":"number","format":"float","minimum":0,"nullable":true},"weight":{"description":"Package weight (in `unit_of_weight` units). Required as part of the dimension group when any related field is filled.","type":"number","format":"float","minimum":0,"nullable":true},"unit_of_height":{"description":"Unit for `height`. Required as part of the dimension group when any related field is filled.","type":"string","enum":["mm","cm","in"],"nullable":true},"unit_of_width":{"description":"Unit for `width`. Required as part of the dimension group when any related field is filled.","type":"string","enum":["mm","cm","in"],"nullable":true},"unit_of_length":{"description":"Unit for `length`. Required as part of the dimension group when any related field is filled.","type":"string","enum":["mm","cm","in"],"nullable":true},"unit_of_weight":{"description":"Unit for `weight`. Required as part of the dimension group when any related field is filled.","type":"string","enum":["mg","g","kg","oz","lb"],"nullable":true},"is_archived":{"description":"1 to archive the row, 0 to keep it active.","type":"integer","enum":[0,1]}},"type":"object"},"AmazonProduct":{"description":"Amazon product as exposed by the Repricer API. Combines core product attributes (SKU, ASIN, title, marketplace) with the per-offer projections (`*_b2b` / `*_b2c` from amazon_product_offer), product settings, info (sales rank, brand, etc.), stock, optimization templates, tags and discount tiers. Most pricing/optimization fields are nullable because they only exist for products that have the corresponding B2B/B2C offer.","required":["id","sku","title","asin","marketplace_id","stock_type","fulfilment_fee","fulfilment_non_pan_eu_fee","other_fee","vendor_price","order_fee","tax_amount","recommended_retail_price","standard_price","isB2B","isB2C","ultra_fast_price_change","isUltraFastPriceChangeActive"],"properties":{"id":{"description":"Internal Amazon product id (primary key in `amazon_product_v2`).","type":"integer"},"sku":{"description":"Seller SKU.","type":"string"},"title":{"description":"Product title from Amazon.","type":"string"},"asin":{"description":"Amazon Standard Identification Number.","type":"string"},"seller_id":{"description":"Amazon seller id resolved from amazon_customer_account_id.","type":"string"},"image":{"description":"Main product image URL.","type":"string"},"group":{"description":"Amazon product group.","type":"string"},"type":{"description":"Amazon product type.","type":"string"},"product_group_b2b_id":{"description":"Product group id for the B2B offer (null when no B2B offer exists).","type":"integer","nullable":true},"product_group_b2c_id":{"description":"Product group id for the B2C offer (null when no B2C offer exists).","type":"integer","nullable":true},"optimization_template_b2b_id":{"description":"OptimizationTemplate id assigned to the B2B offer.","type":"integer","nullable":true},"optimization_template_b2c_id":{"description":"OptimizationTemplate id assigned to the B2C offer.","type":"integer","nullable":true},"optimization_b2b_id":{"description":"Optimization id assigned to the B2B offer (0 when a template is used instead).","type":"integer","nullable":true},"optimization_b2c_id":{"description":"Optimization id assigned to the B2C offer (0 when a template is used instead).","type":"integer","nullable":true},"comments":{"description":"Free-form seller comments for this product.","type":"string","nullable":true},"optimization_active_b2b":{"description":"1 if optimization is active for the B2B offer, 0 if disabled, null if no B2B offer.","type":"integer","enum":[0,1],"nullable":true},"optimization_active_b2c":{"description":"1 if optimization is active for the B2C offer, 0 if disabled, null if no B2C offer.","type":"integer","enum":[0,1],"nullable":true},"profit_type":{"description":"How profit is computed: `CALCULATE` (auto from costs) or `MANUAL` (set by seller).","type":"string","enum":["CALCULATE","MANUAL"],"nullable":true},"listing_price_b2b":{"description":"Current listing price for the B2B offer.","type":"number","format":"float","nullable":true},"listing_price_b2c":{"description":"Current listing price for the B2C offer.","type":"number","format":"float","nullable":true},"shipping_price_b2b":{"description":"Current shipping price for the B2B offer.","type":"number","format":"float","nullable":true},"shipping_price_b2c":{"description":"Current shipping price for the B2C offer.","type":"number","format":"float","nullable":true},"stock_type":{"description":"Fulfillment / stock source: FBA, FBM, etc.","type":"string"},"zero_price_b2b":{"description":"Calculated break-even (`zero profit`) price for the B2B offer.","type":"number","format":"float","nullable":true},"zero_price_b2c":{"description":"Calculated break-even (`zero profit`) price for the B2C offer.","type":"number","format":"float","nullable":true},"fulfilment_fee":{"description":"Amazon FBA fulfilment fee.","type":"number","format":"float"},"fulfilment_non_pan_eu_fee":{"description":"Amazon FBA fulfilment fee for non-Pan-EU programs.","type":"number","format":"float"},"other_fee":{"description":"Other (custom) per-unit fee.","type":"number","format":"float"},"vendor_price":{"description":"Cost price paid to the vendor.","type":"number","format":"float"},"order_fee":{"description":"Per-order fee, capped at 45.","type":"number","format":"float","maximum":45},"tax_amount":{"description":"Applicable VAT/tax percentage.","type":"number","format":"float"},"min_price_b2b":{"description":"Effective minimum price for the B2B offer.","type":"number","format":"float","nullable":true},"min_price_b2c":{"description":"Effective minimum price for the B2C offer.","type":"number","format":"float","nullable":true},"max_price_b2b":{"description":"Effective maximum price for the B2B offer.","type":"number","format":"float","nullable":true},"max_price_b2c":{"description":"Effective maximum price for the B2C offer.","type":"number","format":"float","nullable":true},"condition":{"description":"Item condition (e.g. New, Used).","type":"string","nullable":true},"min_price_type_b2b":{"description":"How min price is set for B2B: fixed VALUE or AUTO-calculated.","type":"string","enum":["VALUE","AUTO"],"nullable":true},"min_price_type_b2c":{"description":"How min price is set for B2C: fixed VALUE or AUTO-calculated.","type":"string","enum":["VALUE","AUTO"],"nullable":true},"min_price_auto_type_b2b":{"description":"When min_price_type_b2b=AUTO: VALUE adds an absolute amount, PERCENT a percentage.","type":"string","enum":["VALUE","PERCENT"],"nullable":true},"min_price_auto_type_b2c":{"description":"When min_price_type_b2c=AUTO: VALUE adds an absolute amount, PERCENT a percentage.","type":"string","enum":["VALUE","PERCENT"],"nullable":true},"min_price_auto_value_b2b":{"description":"Auto min-price offset value for B2B.","type":"number","format":"float","nullable":true},"min_price_auto_value_b2c":{"description":"Auto min-price offset value for B2C.","type":"number","format":"float","nullable":true},"max_price_type_b2b":{"description":"How max price is set for B2B: fixed VALUE or AUTO-calculated.","type":"string","enum":["VALUE","AUTO"],"nullable":true},"max_price_type_b2c":{"description":"How max price is set for B2C: fixed VALUE or AUTO-calculated.","type":"string","enum":["VALUE","AUTO"],"nullable":true},"max_price_auto_type_b2b":{"description":"When max_price_type_b2b=AUTO: VALUE adds an absolute amount, PERCENT a percentage.","type":"string","enum":["VALUE","PERCENT"],"nullable":true},"max_price_auto_type_b2c":{"description":"When max_price_type_b2c=AUTO: VALUE adds an absolute amount, PERCENT a percentage.","type":"string","enum":["VALUE","PERCENT"],"nullable":true},"max_price_auto_value_b2b":{"description":"Auto max-price offset value for B2B.","type":"number","format":"float","nullable":true},"max_price_auto_value_b2c":{"description":"Auto max-price offset value for B2C.","type":"number","format":"float","nullable":true},"min_price_auto_field_b2b":{"description":"Source field used to compute auto min price for B2B (e.g. zero_price).","type":"string","nullable":true},"min_price_auto_field_b2c":{"description":"Source field used to compute auto min price for B2C.","type":"string","nullable":true},"max_price_auto_field_b2b":{"description":"Source field used to compute auto max price for B2B.","type":"string","nullable":true},"max_price_auto_field_b2c":{"description":"Source field used to compute auto max price for B2C.","type":"string","nullable":true},"marketplace_id":{"description":"Amazon marketplace id (e.g. A1PA6795UKMFR9).","type":"string"},"stand_alone_price_b2b":{"description":"Stand-alone price (used when no competitors are present) for the B2B offer.","type":"number","format":"float","nullable":true},"stand_alone_price_b2c":{"description":"Stand-alone price (used when no competitors are present) for the B2C offer.","type":"number","format":"float","nullable":true},"recommended_retail_price":{"description":"Recommended retail price (RRP).","type":"number","format":"float"},"standard_price":{"description":"Former retail price ('Standard' / strike-through price).","type":"number","format":"float"},"use_sale_price":{"description":"1 if the strike-through (sale) price should be used, 0 otherwise.","type":"integer","enum":[0,1]},"activeOptimizationB2B":{"$ref":"#/components/schemas/Optimization"},"activeOptimizationB2C":{"$ref":"#/components/schemas/Optimization"},"min_landed_price_b2b":{"description":"Minimum landed (price + shipping) price for B2B.","type":"number","format":"float","nullable":true},"min_landed_price_b2c":{"description":"Minimum landed (price + shipping) price for B2C.","type":"number","format":"float","nullable":true},"buy_box_price_b2b":{"description":"Current BuyBox listing price for B2B.","type":"number","format":"float","nullable":true},"buy_box_price_b2c":{"description":"Current BuyBox listing price for B2C.","type":"number","format":"float","nullable":true},"buy_box_shipping_price_b2b":{"description":"Current BuyBox shipping price for B2B.","type":"number","format":"float","nullable":true},"buy_box_shipping_price_b2c":{"description":"Current BuyBox shipping price for B2C.","type":"number","format":"float","nullable":true},"is_buy_box_b2b":{"description":"1 if the seller currently owns the B2B BuyBox.","type":"integer","enum":[0,1],"nullable":true},"is_buy_box_b2c":{"description":"1 if the seller currently owns the B2C BuyBox.","type":"integer","enum":[0,1],"nullable":true},"is_updated_b2b":{"description":"1 if the B2B price was updated successfully on Amazon during the last cycle.","type":"integer","enum":[0,1],"nullable":true},"is_updated_b2c":{"description":"1 if the B2C price was updated successfully on Amazon during the last cycle.","type":"integer","enum":[0,1],"nullable":true},"price_updated_b2b":{"description":"Last time the B2B price was pushed to Amazon.","type":"string","format":"date-time","nullable":true},"price_updated_b2c":{"description":"Last time the B2C price was pushed to Amazon.","type":"string","format":"date-time","nullable":true},"last_price_check_b2b":{"description":"Last time competitor prices were polled for the B2B offer.","type":"string","format":"date-time","nullable":true},"last_price_check_b2c":{"description":"Last time competitor prices were polled for the B2C offer.","type":"string","format":"date-time","nullable":true},"buy_box_count_winners_b2b":{"description":"Total number of BuyBox winners observed for B2B.","type":"integer","nullable":true},"buy_box_count_winners_b2c":{"description":"Total number of BuyBox winners observed for B2C.","type":"integer","nullable":true},"buy_box_winner_prices_b2b":{"description":"Comma-separated list of BuyBox winner prices for B2B.","type":"string","nullable":true},"buy_box_winner_prices_b2c":{"description":"Comma-separated list of BuyBox winner prices for B2C.","type":"string","nullable":true},"buy_box_count_fba_winners_b2b":{"description":"Number of FBA BuyBox winners for B2B.","type":"integer","nullable":true},"buy_box_count_fba_winners_b2c":{"description":"Number of FBA BuyBox winners for B2C.","type":"integer","nullable":true},"buy_box_fba_winner_prices_b2b":{"description":"Comma-separated FBA BuyBox winner prices for B2B.","type":"string","nullable":true},"buy_box_fba_winner_prices_b2c":{"description":"Comma-separated FBA BuyBox winner prices for B2C.","type":"string","nullable":true},"buy_box_count_fba_winner_prices_b2b":{"description":"Number of distinct FBA BuyBox winner prices for B2B.","type":"integer","nullable":true},"buy_box_count_fba_winner_prices_b2c":{"description":"Number of distinct FBA BuyBox winner prices for B2C.","type":"integer","nullable":true},"buy_box_count_fbm_winners_b2b":{"description":"Number of FBM BuyBox winners for B2B.","type":"integer","nullable":true},"buy_box_count_fbm_winners_b2c":{"description":"Number of FBM BuyBox winners for B2C.","type":"integer","nullable":true},"buy_box_fbm_winner_prices_b2b":{"description":"Comma-separated FBM BuyBox winner prices for B2B.","type":"string","nullable":true},"buy_box_fbm_winner_prices_b2c":{"description":"Comma-separated FBM BuyBox winner prices for B2C.","type":"string","nullable":true},"buy_box_price_margin_b2b":{"description":"BuyBox price margin (vs current price) for B2B; 0 if no offer.","type":"string"},"buy_box_price_margin_b2c":{"description":"BuyBox price margin (vs current price) for B2C; 0 if no offer.","type":"string"},"is_prime":{"description":"1 if the offer is Prime eligible.","type":"integer","enum":[0,1]},"is_national_prime":{"description":"1 if the offer is national-Prime eligible.","type":"integer","enum":[0,1]},"is_featured_merchant_b2b":{"description":"1 if the seller is BuyBox-eligible (featured merchant) for B2B.","type":"integer","enum":[0,1],"nullable":true},"is_featured_merchant_b2c":{"description":"1 if the seller is BuyBox-eligible (featured merchant) for B2C.","type":"integer","enum":[0,1],"nullable":true},"ship_domestically_b2b":{"description":"1 if the B2B offer ships domestically only.","type":"integer","enum":[0,1],"nullable":true},"ship_domestically_b2c":{"description":"1 if the B2C offer ships domestically only.","type":"integer","enum":[0,1],"nullable":true},"suggested_lower_price_plus_shipping_b2b":{"description":"Amazon's suggested lower price (incl. shipping) for B2B.","type":"number","format":"float","nullable":true},"suggested_lower_price_plus_shipping_b2c":{"description":"Amazon's suggested lower price (incl. shipping) for B2C.","type":"number","format":"float","nullable":true},"competitive_price_threshold_b2b":{"description":"Amazon competitive-price threshold for B2B.","type":"number","format":"float","nullable":true},"competitive_price_threshold_b2c":{"description":"Amazon competitive-price threshold for B2C.","type":"number","format":"float","nullable":true},"fba_program_b2b":{"description":"FBA program for B2B (only meaningful for FBA products).","type":"string","enum":["NONE","CEE","PAN_ENU"],"nullable":true},"fba_program_b2c":{"description":"FBA program for B2C (only meaningful for FBA products).","type":"string","enum":["NONE","CEE","PAN_ENU"],"nullable":true},"is_low_price_fba_fee_b2b":{"description":"1 if the B2B offer qualifies for low-price FBA fees.","type":"integer","enum":[0,1],"nullable":true},"is_low_price_fba_fee_b2c":{"description":"1 if the B2C offer qualifies for low-price FBA fees.","type":"integer","enum":[0,1],"nullable":true},"parent_asin":{"description":"Parent ASIN for variation listings.","type":"string","nullable":true},"ean":{"description":"European Article Number.","type":"string","nullable":true},"start_price_b2b":{"description":"Initial/start price for the B2B offer.","type":"number","format":"float","nullable":true},"start_price_b2c":{"description":"Initial/start price for the B2C offer.","type":"number","format":"float","nullable":true},"landed_price_b2b":{"description":"Current landed (listing + shipping) price for B2B.","type":"number","format":"float","nullable":true},"landed_price_b2c":{"description":"Current landed (listing + shipping) price for B2C.","type":"number","format":"float","nullable":true},"current_profit_b2b":{"description":"Current profit estimate for the B2B offer.","type":"number","format":"float","nullable":true},"current_profit_b2c":{"description":"Current profit estimate for the B2C offer.","type":"number","format":"float","nullable":true},"count_beat_item_b2b":{"description":"Number of times the B2B offer was beaten by competitors.","type":"integer","nullable":true},"count_beat_item_b2c":{"description":"Number of times the B2C offer was beaten by competitors.","type":"integer","nullable":true},"competitors_amount_b2b":{"description":"Number of competitors observed for B2B.","type":"integer","nullable":true},"competitors_amount_b2c":{"description":"Number of competitors observed for B2C.","type":"integer","nullable":true},"bb_last_24h_percent_with_b2b":{"description":"Percentage of the last 24h the seller held the BuyBox for B2B.","type":"number","format":"float","nullable":true},"bb_last_24h_percent_with_b2c":{"description":"Percentage of the last 24h the seller held the BuyBox for B2C.","type":"number","format":"float","nullable":true},"order_last_date":{"description":"Date of the most recent order for the product.","type":"string","format":"date-time","nullable":true},"sales_rank_1":{"description":"Primary sales rank value.","type":"integer","nullable":true},"sales_rank_category_1":{"description":"Category that the primary sales rank belongs to.","type":"string","nullable":true},"sales_rank_2":{"description":"Secondary sales rank value.","type":"integer","nullable":true},"sales_rank_category_2":{"description":"Category that the secondary sales rank belongs to.","type":"string","nullable":true},"isbn":{"description":"International Standard Book Number (books only).","type":"string","nullable":true},"upc":{"description":"Universal Product Code.","type":"string","nullable":true},"brand":{"description":"Brand name.","type":"string","nullable":true},"model":{"description":"Model identifier.","type":"string","nullable":true},"product_type":{"description":"Amazon product type code.","type":"string","nullable":true},"manufacturer":{"description":"Manufacturer name.","type":"string","nullable":true},"hazmat":{"description":"1 if the product is flagged as hazardous (Hazmat).","type":"integer","enum":[0,1],"nullable":true},"percent_from_vendor_price_b2b":{"description":"Profit / vendor_price ratio (percent) for B2B; null if costs are missing.","type":"number","format":"float","nullable":true},"percent_from_vendor_price_b2c":{"description":"Profit / vendor_price ratio (percent) for B2C; null if costs are missing.","type":"number","format":"float","nullable":true},"min_estimated_profit_b2b":{"description":"Estimated profit at min_price for the B2B offer.","type":"number","format":"float","nullable":true},"min_estimated_profit_b2c":{"description":"Estimated profit at min_price for the B2C offer.","type":"number","format":"float","nullable":true},"max_estimated_profit_b2b":{"description":"Estimated profit at max_price for the B2B offer.","type":"number","format":"float","nullable":true},"max_estimated_profit_b2c":{"description":"Estimated profit at max_price for the B2C offer.","type":"number","format":"float","nullable":true},"tags":{"description":"Tags attached to the product.","type":"array","items":{"$ref":"#/components/schemas/Tag"}},"isB2B":{"description":"True if this account/marketplace pair is configured as a B2B offer.","type":"boolean"},"isB2C":{"description":"True if this account/marketplace pair is configured as a B2C offer.","type":"boolean"},"discountsB2B":{"description":"Quantity-based discount tiers for the B2B offer.","type":"array","items":{"$ref":"#/components/schemas/AmazonProductOfferDiscount"}},"order_count_last_30":{"description":"Number of orders for this product in the last 30 days.","type":"integer","nullable":true},"ultra_fast_price_change":{"description":"Configuration flag that allows ultra-fast price change. The flag alone does not mean the feature is active — see `isUltraFastPriceChangeActive`.","type":"integer","enum":[0,1]},"isUltraFastPriceChangeActive":{"description":"Effective activation state of ultra-fast price change for this product, taking subscription limits and internal conditions into account.","type":"boolean"}},"type":"object"},"AmazonProductCompetitor":{"description":"A competing seller's offer for an Amazon product, including price, shipping, prime status, fulfillment method and BuyBox eligibility.","required":["seller_id","listing_price","shipping_price","offer_type"],"properties":{"seller_id":{"description":"Amazon seller identifier of the competitor.","type":"string"},"name":{"description":"Competitor display name (currently always empty in the response).","type":"string"},"listing_price":{"description":"Listing price (excluding shipping) in the marketplace currency.","type":"number","format":"float"},"shipping_price":{"description":"Shipping price in the marketplace currency.","type":"number","format":"float"},"is_prime":{"description":"1 if the offer is Amazon Prime eligible, 0 otherwise.","type":"integer","enum":[0,1]},"fulfilled_by_amazon":{"description":"1 if the offer is FBA (Fulfilled by Amazon), 0 if FBM.","type":"integer","enum":[0,1]},"buybox_winner":{"description":"1 if this competitor currently owns the BuyBox, 0 otherwise.","type":"integer","enum":[0,1]},"buybox_eligible":{"description":"1 if the offer is BuyBox/featured-merchant eligible (mapped from is_featured_merchant).","type":"integer","enum":[0,1]},"offer_type":{"description":"Offer marketplace type: B2B (business) or B2C (consumer).","type":"string","enum":["B2B","B2C"]}},"type":"object"},"AmazonProductOfferDiscount":{"description":"Quantity-based discount tier (FIXED amount or PERCENT) attached to a B2B/B2C product offer.","required":["type","quantity","value"],"properties":{"type":{"description":"Discount calculation type: FIXED amount or PERCENT of the listing price.","type":"string","enum":["FIXED","PERCENT"]},"quantity":{"description":"Minimum quantity that triggers the discount tier (must be at least 2).","type":"integer","minimum":2},"value":{"description":"Discount value: amount when type=FIXED, percent when type=PERCENT.","type":"number","format":"float","minimum":0.01}},"type":"object"},"AmazonProductPackageDimension":{"description":"Package dimensions and weight for an Amazon product. Stores both seller-provided values (height/width/length/weight + units) and the values reported by Amazon (`*_amazon`). Children rows can be grouped under a `parent_id` and toggled via `is_expanded`.","required":["id","asin","title","amazon_marketplace_id"],"properties":{"id":{"description":"Primary key.","type":"integer"},"asin":{"description":"Amazon Standard Identification Number.","type":"string","maxLength":20},"sku":{"description":"Seller SKU.","type":"string","maxLength":50,"nullable":true},"fnsku":{"description":"Fulfillment Network SKU.","type":"string","maxLength":50,"nullable":true},"title":{"description":"Product title.","type":"string"},"height":{"description":"Seller-provided package height (in `unit_of_height` units).","type":"number","format":"float","minimum":0,"nullable":true},"width":{"description":"Seller-provided package width (in `unit_of_width` units).","type":"number","format":"float","minimum":0,"nullable":true},"length":{"description":"Seller-provided package length (in `unit_of_length` units).","type":"number","format":"float","minimum":0,"nullable":true},"weight":{"description":"Seller-provided package weight (in `unit_of_weight` units).","type":"number","format":"float","minimum":0,"nullable":true},"unit_of_height":{"description":"Unit for `height`.","type":"string","enum":["mm","cm","in"],"nullable":true},"unit_of_width":{"description":"Unit for `width`.","type":"string","enum":["mm","cm","in"],"nullable":true},"unit_of_length":{"description":"Unit for `length`.","type":"string","enum":["mm","cm","in"],"nullable":true},"unit_of_weight":{"description":"Unit for `weight`.","type":"string","enum":["mg","g","kg","oz","lb"],"nullable":true},"height_amazon":{"description":"Package height as reported by Amazon.","type":"number","format":"float","nullable":true},"width_amazon":{"description":"Package width as reported by Amazon.","type":"number","format":"float","nullable":true},"length_amazon":{"description":"Package length as reported by Amazon.","type":"number","format":"float","nullable":true},"weight_amazon":{"description":"Package weight as reported by Amazon.","type":"number","format":"float","nullable":true},"unit_of_weight_amazon":{"description":"Unit of weight as reported by Amazon.","type":"string","nullable":true},"unit_of_dimension_amazon":{"description":"Unit of dimensions as reported by Amazon.","type":"string","nullable":true},"is_archived":{"description":"1 if the row is archived, 0 otherwise.","type":"integer","enum":[0,1]},"is_expanded":{"description":"1 if a parent row is expanded in the UI grouping (children visible).","type":"integer","enum":[0,1]},"amazon_zone_id":{"description":"Amazon zone code resolved from the marketplace (computed on output).","type":"string","nullable":true},"amazon_marketplace_id":{"description":"Amazon marketplace id.","type":"string","maxLength":20},"amazon_customer_account_id":{"description":"Amazon customer account id this row belongs to.","type":"integer"},"parent_id":{"description":"Parent dimension id when this row is a variant/child.","type":"integer","nullable":true},"children_count":{"description":"Number of child rows under this row.","type":"integer"},"created_at":{"description":"When the row was created.","type":"string","format":"date-time"},"updated_at":{"description":"Last update timestamp.","type":"string","format":"date-time"}},"type":"object"},"AmazonProductStock":{"description":"Aggregated stock state for an Amazon product (FBA + local), with the marketplace and seller it belongs to.","required":["id","stock","stock_type","local_stock"],"properties":{"id":{"description":"Amazon product ID this stock record belongs to.","type":"integer"},"sku":{"description":"Seller SKU of the product.","type":"string","nullable":true},"stock":{"description":"Stock quantity reported by Amazon (FBA inventory).","type":"integer"},"stock_type":{"description":"Fulfillment / stock source type (e.g. FBA, FBM).","type":"string"},"local_stock":{"description":"Local (seller-managed) stock quantity.","type":"integer"},"marketplace_id":{"description":"Amazon marketplace ID this stock belongs to (resolved via amazonProduct relation).","type":"string","nullable":true},"seller_id":{"description":"Amazon seller ID owning the product (resolved from amazon_customer_account_id).","type":"string","nullable":true}},"type":"object"},"Optimization":{"description":"Polymorphic Repricer optimization strategy. Discriminated by `type` and serialized as one of the strategy schemas listed below.","required":["id","type"],"oneOf":[{"$ref":"#/components/schemas/optimizationStrategyBuyBox"},{"$ref":"#/components/schemas/optimizationStrategyDailyPush"},{"$ref":"#/components/schemas/optimizationStrategyManual"},{"$ref":"#/components/schemas/optimizationStrategyPosition"},{"$ref":"#/components/schemas/optimizationStrategyProfit"},{"$ref":"#/components/schemas/optimizationStrategyPush"},{"$ref":"#/components/schemas/optimizationStrategySamePrice"},{"$ref":"#/components/schemas/optimizationStrategySimple"},{"$ref":"#/components/schemas/optimizationStrategyCrossProduct"},{"$ref":"#/components/schemas/optimizationStrategyElasticPricing"},{"$ref":"#/components/schemas/optimizationStrategyB2bPriceDiscount"}]},"OptimizationAsin":{"description":"ASIN attached to a Cross-Product optimization strategy as a comparison reference for pricing.","required":["asin","marketplace_id"],"properties":{"id":{"description":"Primary key.","type":"integer"},"optimization_id":{"description":"Owning Optimization id (Cross-Product strategy). Set automatically by the parent strategy.","type":"integer","nullable":true},"asin":{"description":"Reference Amazon ASIN (max 20 chars).","type":"string","maxLength":20},"marketplace_id":{"description":"Amazon marketplace ID where this ASIN is referenced.","type":"string","maxLength":45}},"type":"object"},"OptimizationLimit":{"description":"Limit rule for Push / DailyPush strategy. Triggers a price step (UP/DOWN by VALUE/PERCENT) after a configured number of orders or days.","required":["type","step_price_type","step_point","step_price"],"properties":{"id":{"description":"Primary key.","type":"integer"},"optimization_id":{"description":"Owning Optimization id (set by the parent strategy).","type":"integer"},"step_price":{"description":"Step value applied to the price when this limit triggers.","type":"number","format":"float"},"step_point":{"description":"Step unit: absolute VALUE or PERCENT of the current price.","type":"string","enum":["VALUE","PERCENT"]},"step_price_type":{"description":"Direction of the price step: UP raises price, DOWN lowers it.","type":"string","enum":["UP","DOWN"]},"limit_type":{"description":"When the day-based step fires (BEFORE or AFTER `limit_day` day boundary). Required when type=DAY.","type":"string","default":"BEFORE","enum":["BEFORE","AFTER"]},"limit":{"description":"Order-count threshold; required (>=1) when type=ORDER, defaults to 0 otherwise.","type":"integer","minimum":0},"limit_day":{"description":"Day-count threshold; required (>=1) when type=DAY, defaults to 0 otherwise.","type":"integer","minimum":0},"type":{"description":"Limit kind: ORDER (count of orders) or DAY (number of days).","type":"string","enum":["ORDER","DAY"]}},"type":"object"},"OptimizationSeasonality":{"description":"Seasonality period attached to an Elastic Pricing optimization. Defines a date window during which the strategy adapts to seasonal demand. Period must not exceed 1 year, max 12 periods per optimization.","required":["type","date_start","date_end"],"properties":{"id":{"description":"Primary key.","type":"integer","example":1},"optimization_id":{"description":"Owning Optimization id (set by the parent strategy).","type":"integer","example":123},"type":{"description":"Seasonality recurrence: `one_time` for a single window, `annual` for a yearly recurring window.","type":"string","maxLength":10,"enum":["one_time","annual"],"example":"annual"},"date_start":{"description":"Start date of the seasonality period (Y-m-d).","type":"string","format":"date","example":"2024-12-01"},"date_end":{"description":"End date of the seasonality period (Y-m-d). Must be on or after `date_start`.","type":"string","format":"date","example":"2024-12-31"},"is_active":{"description":"1 if this seasonality period is active, 0 if disabled.","type":"integer","enum":[0,1],"example":1}},"type":"object"},"OptimizationTemplate":{"description":"Reusable named optimization template — couples a human-readable title with a saved Optimization configuration that can be applied to multiple products.","required":["id","title","optimization_id"],"properties":{"id":{"description":"Primary key.","type":"integer"},"title":{"description":"Human-readable template title (max 100 chars).","type":"string","maxLength":100},"optimization_id":{"description":"Optimization id this template wraps.","type":"integer"}},"type":"object"},"ProductGroup":{"description":"Customer-scoped grouping of Amazon products. Title is unique per customer; products inherit the group's default optimization template unless overridden.","required":["id","title"],"properties":{"id":{"description":"Primary key","type":"integer"},"title":{"description":"Group title. Unique within the customer.","type":"string","maxLength":100},"default_optimization_template_id":{"description":"OptimizationTemplate id applied to products of this group by default.","type":"integer","nullable":true}},"type":"object"},"ProductImport":{"description":"Bulk product import job (CSV/TXT upload). Tracks progress (count_products / count_imported / count_errors), status lifecycle, and the source file location on S3.","required":["id","title","status","type"],"properties":{"id":{"description":"Primary key.","type":"integer"},"title":{"description":"Human-readable job title (typically the original file name).","type":"string","maxLength":400},"status":{"description":"Job status lifecycle: NEW -> IN_PROGRESS -> READY/DONE/EMPTY_PRODUCTS.","type":"string","maxLength":20,"enum":["NEW","IN_PROGRESS","EMPTY_PRODUCTS","DONE","READY"]},"count_products":{"description":"Total number of product rows discovered in the source file.","type":"integer"},"count_errors":{"description":"Number of rows that failed validation.","type":"integer"},"count_imported":{"description":"Number of rows imported successfully.","type":"integer"},"date_started":{"description":"When the import worker started processing.","type":"string","format":"date-time","nullable":true},"date_finished":{"description":"When the import worker finished.","type":"string","format":"date-time","nullable":true},"date_inserted":{"description":"When the job record was created.","type":"string","format":"date-time"},"date_updated":{"description":"Last update timestamp.","type":"string","format":"date-time"},"s3_url":{"description":"S3 location of the original uploaded file.","type":"string","maxLength":400},"type":{"description":"Job type discriminator (always `import` for entries returned here).","type":"string"},"params":{"description":"JSON-decoded job parameters (free-form per import type).","type":"array","items":{"type":"object"}}},"type":"object"},"ProductImportExtended":{"description":"Bulk product import job with the per-error breakdown attached. Same shape as ProductImport plus an `errors` array containing one entry per (field, error message) pair, with the source line numbers.","required":["id","title","status","type","errors"],"type":"object","allOf":[{"properties":{"id":{"description":"Primary key.","type":"integer"},"title":{"description":"Human-readable job title (typically the original file name).","type":"string","maxLength":400},"status":{"description":"Job status lifecycle.","type":"string","maxLength":20,"enum":["NEW","IN_PROGRESS","EMPTY_PRODUCTS","DONE","READY"]},"count_products":{"description":"Total number of product rows discovered in the source file.","type":"integer"},"count_errors":{"description":"Number of rows that failed validation.","type":"integer"},"count_imported":{"description":"Number of rows imported successfully.","type":"integer"},"date_started":{"description":"When the import worker started processing.","type":"string","format":"date-time","nullable":true},"date_finished":{"description":"When the import worker finished.","type":"string","format":"date-time","nullable":true},"date_inserted":{"description":"When the job record was created.","type":"string","format":"date-time"},"date_updated":{"description":"Last update timestamp.","type":"string","format":"date-time"},"s3_url":{"description":"S3 location of the original uploaded file.","type":"string","maxLength":400},"type":{"description":"Job type discriminator (always `import` for entries returned here).","type":"string"},"params":{"description":"JSON-decoded job parameters (free-form per import type).","type":"array","items":{"type":"object"}},"errors":{"description":"Per-error breakdown derived from the JSON `error` column.","type":"array","items":{"required":["count","lines","error","field"],"properties":{"count":{"description":"How many rows were affected by this error.","type":"integer"},"lines":{"description":"Source-file line numbers where the error occurred.","type":"array","items":{"type":"integer"}},"error":{"description":"Validation/parsing error message.","type":"string"},"field":{"description":"Source-file column the error refers to.","type":"string"}},"type":"object"}}}},{"$ref":"#/components/schemas/ProductImport"}]},"Tag":{"description":"Customer-scoped product tag. Title is unique per customer (case-insensitive). A single product may carry up to MAX_TAGS_FOR_THE_PRODUCT (30) tags.","required":["id","title","color"],"properties":{"id":{"description":"Primary key","type":"integer"},"title":{"description":"Display name. Unique across the customer (case-insensitive).","type":"string","maxLength":255,"minLength":3},"color":{"description":"Hex color code in #RRGGBB format (exactly 7 characters).","type":"string","maxLength":7,"minLength":7}},"type":"object"},"Timezone":{"description":"Reference list of supported timezones, used as the dropdown source for product- and customer-level timezone selection.","required":["id","country_code","name"],"properties":{"id":{"description":"Primary key","type":"integer"},"country_code":{"description":"ISO-3166-1 alpha-2 country code","type":"string"},"name":{"description":"IANA timezone name (e.g. Europe/Berlin)","type":"string"}},"type":"object"},"optimizationStrategyB2bPriceDiscount":{"description":"Optimization strategy: B2B Price Discount. Applies a fixed-amount or percentage discount on top of the B2C price for the corresponding B2B offer.","required":["id","type","b2b_price_discount_type","b2b_price_discount"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["b2b_price_discount"]},"b2b_price_discount_type":{"description":"Discount unit: absolute VALUE or PERCENT of the B2C price.","type":"string","enum":["VALUE","PERCENT"]},"b2b_price_discount":{"description":"Discount amount. Capped at 99.99 when `b2b_price_discount_type` is PERCENT.","type":"number","format":"float","maximum":99.99,"minimum":0}},"type":"object"},"optimizationStrategyBuyBox":{"description":"Optimization strategy: BuyBox. Targets the highest possible price while keeping/regaining the BuyBox; sub-mode is selected by `optional_buybox_settings`. Some fields become required only for specific sub-modes (see field descriptions).","required":["id","type","optional_buybox_settings","keep_buy_box","buybox_priority"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["buyBox"]},"optional_buybox_settings":{"description":"BuyBox sub-mode that selects which extra fields apply.","type":"string","enum":["NONE","CHEAPEST","DO_NOT_CHEAPEST","DO_NOT_CHEAPEST_MORE_THEN_X","CHEAPEST_SELLERS","PRICE_GAP_TO_BUY_BOX_PRICE"]},"keep_buy_box":{"description":"1 to keep the BuyBox once won, 0 otherwise.","type":"integer","enum":[0,1]},"raise_price_in_case_of_min_without_buybox":{"description":"Deprecated alias for `not_raise_price_in_case_of_min_without_buybox`. Use the new field instead.","type":"integer","enum":[0,1],"deprecated":true},"not_raise_price_in_case_of_min_without_buybox":{"description":"1 to NOT raise the price when current price equals min and BuyBox is not won; 0 to raise.","type":"integer","enum":[0,1]},"buybox_settings_type":{"description":"Comma-separated stock types to consider, e.g. 'FBM Prime,FBA,FBM'. Allowed items: ALL, FBA, FBM, 'FBM Prime'. Required when `optional_buybox_settings` is CHEAPEST, DO_NOT_CHEAPEST or DO_NOT_CHEAPEST_MORE_THEN_X.","type":"string"},"price_gap":{"description":"Price gap value (interpreted by `price_gap_unit`). Required when `optional_buybox_settings` is CHEAPEST_SELLERS or DO_NOT_CHEAPEST_MORE_THEN_X.","type":"number","format":"float"},"price_gap_unit":{"description":"Unit of `price_gap`. Required together with `price_gap`.","type":"string","enum":["VALUE","PERCENT"]},"selected_seller_ids":{"description":"Whitelisted competitor seller ids. Required when `optional_buybox_settings`=CHEAPEST_SELLERS. Max 50 ids; each <= 45 chars.","type":"array","items":{"type":"string","maxLength":45}},"buybox_priority":{"description":"Comma-separated priority order from {FBA, FBM, 'FBM Prime'}. Must contain all 3 unique values, e.g. 'FBM Prime,FBA,FBM'.","type":"string"}},"type":"object"},"optimizationStrategyCrossProduct":{"description":"Optimization strategy: Cross-Product. Compares the seller's product against a curated list of reference ASINs (Private Label use case). Inherits Manual strategy fields and adds prime/BuyBox controls plus the reference ASIN list (max 50 items).","required":["id","type","based_on_price","price_step","unit","ignore_shipping","ignore_offer_under_min_price","seller_list_type","seller_type","round_price","delivery_from","availability_type","prime_status","optimizationAsins"],"type":"object","allOf":[{"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["crossProduct"]},"based_on_price":{"description":"Reference price used for comparison: PRICE (listing) or BUYBOX_PRICE.","type":"string","enum":["PRICE","BUYBOX_PRICE"]},"price_step":{"description":"Price gap value (interpreted by `unit`).","type":"number","format":"float"},"unit":{"description":"Unit of `price_step`.","type":"string","enum":["VALUE","PERCENT"]},"ignore_shipping":{"description":"1 to ignore shipping costs in comparisons.","type":"integer","enum":[0,1]},"ignore_own_offers":{"description":"1 to exclude the seller's own offers from competitor comparison.","type":"integer","enum":[0,1]},"ignore_offer_under_min_price":{"description":"1 to ignore competitor offers below the configured min price.","type":"integer","enum":[0,1]},"seller_list_type":{"description":"Whether `optimization_sellers_ids` is a WHITElist (allow) or BLACKlist (deny).","type":"string","enum":["WHITE","BLACK"]},"optimization_sellers_ids":{"description":"Competitor seller ids to whitelist/blacklist. Max 50 items.","type":"array","items":{"type":"string"}},"min_number_estimates":{"description":"Minimum number of feedback ratings a competitor must have.","type":"integer"},"min_seller_rate":{"description":"Minimum competitor feedback rating (0-100).","type":"integer"},"seller_type":{"description":"Restrict comparison to ALL, FBA-only or FBM-only competitor offers.","type":"string","enum":["ALL","FBA","FBM"]},"round_price":{"description":"1 to round the resulting price to `round_step`.","type":"integer","enum":[0,1]},"round_step":{"description":"Rounding step (e.g. 0.05). Used when `round_price`=1.","type":"number","format":"float"},"subcondition":{"description":"Allowed competitor sub-conditions (e.g. new, used_good). Concatenated string max 400 chars.","type":"array","items":{"type":"string","enum":["new","like_new","mint","very_good","good","acceptable","poor","club","oem","warranty","refurbished_warranty","refurbished","open_box","other"]}},"ignore_delivery_days":{"description":"Ignore competitor offers whose delivery time exceeds this many days.","type":"integer"},"delivery_from":{"description":"Restrict competitor offers by ship-from origin.","type":"string","enum":["ANY","ABROAD","DOMESTIC"]},"availability_type":{"description":"Restrict competitors by availability: ALL or only those available NOW.","type":"string","enum":["ALL","NOW"]},"prime_status":{"description":"Restrict competitors by Prime status.","type":"string","enum":["ALL","PRIME","NOT_PRIME"]},"buybox_priority":{"description":"Comma-separated priority order from {FBA, FBM, 'FBM Prime'}. Must contain all 3 unique values.","type":"string"},"keep_buy_box":{"description":"1 to keep the BuyBox once won.","type":"integer","enum":[0,1]},"optimizationAsins":{"description":"Reference ASINs (max 50) the strategy compares against.","type":"array","items":{"$ref":"#/components/schemas/OptimizationAsin"}}}},{"$ref":"#/components/schemas/optimizationStrategyManual"}]},"optimizationStrategyDailyPush":{"description":"Optimization strategy: Daily Push. Adjusts prices based on the number of units sold within the day, with daily reset at the configured timezone time. Limit rules are described by `optimizationLimits` (max 50 entries).","required":["id","type","start_price","calculate_orders_by","round_price"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"reset_minutes":{"description":"Reset minute (00, 10, 20, 30, 40, 50). Defaults to '00'.","type":"string","maxLength":2},"reset_hours":{"description":"Reset hour (00..23). Defaults to '00'.","type":"string","maxLength":2},"timezone_id":{"description":"Timezone id used to compute the daily reset moment.","type":"string"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["dailyPush"]},"keep_buy_box":{"description":"1 to keep the BuyBox once won.","type":"integer","enum":[0,1]},"start_price":{"description":"Source of the daily start price.","type":"string","enum":["CURRENT","INITIAL_PRICE","RECOMMENDED_PRICE","FORMER_RETAIL_PRICE","MIN_PRICE","MAX_PRICE","VALUE"]},"start_price_value":{"description":"Custom start price value. Required when `start_price`=VALUE.","type":"number","format":"float","minimum":0.01},"calculate_orders_by":{"description":"Whether order counts are tracked per ASIN or per SKU.","type":"string","enum":["ASIN","SKU"]},"reset_price_and_settings":{"description":"When updating: 1 to wipe per-product limit progress and force a reset.","type":"integer","enum":[0,1]},"round_price":{"description":"1 to round the resulting price to `round_step`.","type":"integer","enum":[0,1]},"round_step":{"description":"Rounding step (e.g. 0.05). Used when `round_price`=1.","type":"number","format":"float"},"optimizationLimits":{"description":"Limit rules driving the price step on each daily cycle. Max 50 entries.","type":"array","items":{"$ref":"#/components/schemas/OptimizationLimit"}}},"type":"object"},"optimizationStrategyElasticPricing":{"description":"Optimization strategy: Elastic Pricing. Targets a high-level objective (`optimization_target`) and combines optional stock management and seasonality rules. Conditional fields become required for specific targets/types — see field descriptions.","required":["id","type","buybox_priority","keep_buy_box","optimization_target"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["elasticPricing"]},"buybox_priority":{"description":"Comma-separated priority order from {FBA, FBM, 'FBM Prime'}. Must contain all 3 unique values.","type":"string"},"keep_buy_box":{"description":"1 to keep the BuyBox once won.","type":"integer","enum":[0,1]},"optimization_target":{"description":"High-level optimization objective.","type":"string","maxLength":20,"enum":["auto_pilot","best_seller_rank","net_margin","stock_level"]},"stock_management":{"description":"1 to enable stock-aware pricing, 0 otherwise.","type":"integer","default":1,"enum":[0,1]},"stock_management_type":{"description":"How stock management influences pricing. Required when `optimization_target`=stock_level.","type":"string","maxLength":20,"enum":["keep_stock","sale_stock"]},"stock_range":{"description":"Target stock-availability window in days (1-365). Required for stock_level/keep_stock and best_seller_rank with stock_management=1.","type":"integer","maximum":365,"minimum":1},"target_margin":{"description":"Target margin value. Required when `optimization_target`=net_margin.","type":"number","format":"float"},"target_margin_type":{"description":"Unit of `target_margin`. Required when `optimization_target`=net_margin.","type":"string","maxLength":10,"enum":["NUMBER","PERCENT"]},"evaluation_period":{"description":"Evaluation window for net margin in days (1-365). Required when `optimization_target`=net_margin.","type":"integer","maximum":365,"minimum":1},"stock_sale_date":{"description":"Target sell-by date (Y-m-d). Must be at least 7 days from now. Required when `optimization_target`=stock_level and `stock_management_type`=sale_stock.","type":"string","format":"date"},"stock_buffer":{"description":"Stock buffer to retain. Required when `optimization_target`=stock_level and `stock_management_type`=keep_stock.","type":"integer","minimum":1},"round_price":{"description":"Round price [0 | 1]","type":"integer"},"round_step":{"description":"Round step","type":"number"},"optimizationSeasonalities":{"description":"Seasonality periods (max 12). Each period must not exceed 1 year.","type":"array","items":{"$ref":"#/components/schemas/OptimizationSeasonality"}}},"type":"object"},"optimizationStrategyManual":{"description":"Optimization strategy: Manual. Sets price differently from the cheapest competitor or a chosen seller list (whitelist/blacklist) within the configured min/max price range.","required":["id","type","based_on_price","price_step","unit","ignore_shipping","ignore_offer_under_min_price","seller_list_type","seller_type","round_price","delivery_from","availability_type"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["manual"]},"based_on_price":{"description":"Reference price used for comparison: PRICE (listing) or BUYBOX_PRICE.","type":"string","enum":["PRICE","BUYBOX_PRICE"]},"price_step":{"description":"Price gap value (interpreted by `unit`).","type":"number","format":"float"},"unit":{"description":"Unit of `price_step`.","type":"string","enum":["VALUE","PERCENT"]},"ignore_shipping":{"description":"1 to ignore shipping costs in comparisons.","type":"integer","enum":[0,1]},"ignore_offer_under_min_price":{"description":"1 to ignore competitor offers below the configured min price.","type":"integer","enum":[0,1]},"seller_list_type":{"description":"Whether `optimization_sellers_ids` is a WHITElist (allow) or BLACKlist (deny).","type":"string","enum":["WHITE","BLACK"]},"optimization_sellers_ids":{"description":"Competitor seller ids to whitelist/blacklist. Max 50 items.","type":"array","items":{"type":"string"}},"min_number_estimates":{"description":"Minimum number of feedback ratings a competitor must have.","type":"integer"},"min_seller_rate":{"description":"Minimum competitor feedback rating.","type":"integer"},"seller_type":{"description":"Restrict comparison to ALL, FBA-only or FBM-only competitor offers.","type":"string","enum":["ALL","FBA","FBM"]},"round_price":{"description":"1 to round the resulting price to `round_step`.","type":"integer","enum":[0,1]},"round_step":{"description":"Rounding step (e.g. 0.05). Used when `round_price`=1.","type":"number","format":"float"},"subcondition":{"description":"Allowed competitor sub-conditions. Concatenated string max 400 chars.","type":"array","items":{"type":"string","enum":["new","like_new","mint","very_good","good","acceptable","poor","club","oem","warranty","refurbished_warranty","refurbished","open_box","other"]}},"ignore_own_offers":{"description":"1 to exclude the seller's own offers from competitor comparison.","type":"integer","enum":[0,1]},"ignore_delivery_days":{"description":"Ignore competitor offers whose delivery time exceeds this many days.","type":"integer"},"delivery_from":{"description":"Restrict competitor offers by ship-from origin.","type":"string","enum":["ANY","ABROAD","DOMESTIC"]},"availability_type":{"description":"Restrict competitors by availability: ALL or only those available NOW.","type":"string","enum":["ALL","NOW"]},"prime_status":{"description":"Prime status ['ALL' | 'PRIME' | 'NOT_PRIME']","type":"string","enum":["ALL","PRIME","NOT_PRIME"]}},"type":"object"},"optimizationStrategyPosition":{"description":"Optimization strategy: Position. Targets a specific rank (1-20) in the price overview list of competing offers.","required":["id","type","value"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["position"]},"value":{"description":"Target position in the price overview (1 = cheapest).","type":"integer","maximum":20,"minimum":1}},"type":"object"},"optimizationStrategyProfit":{"description":"Optimization strategy: Profit. Calculates the desired margin as an absolute amount or percentage on top of the configured purchase price.","required":["id","type","value","value_type"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["profit"]},"value":{"description":"Margin value (interpreted by `value_type`).","type":"number","format":"float"},"value_type":{"description":"Unit of `value`: VALUE (absolute) or PERCENT.","type":"string","enum":["VALUE","PERCENT"]}},"type":"object"},"optimizationStrategyPush":{"description":"Optimization strategy: Push. Adjusts prices based on units actually sold within the selected days of the week, using rules in `optimizationLimits`.","required":["id","type","start_price","calculate_orders_by","round_price"],"type":"object","allOf":[{"properties":{"id":{"description":"Optimization id.","type":"integer"},"timezone_id":{"description":"Timezone id used to compute the daily reset moment.","type":"string"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["push"]},"keep_buy_box":{"description":"1 to keep the BuyBox once won.","type":"integer","enum":[0,1]},"start_price":{"description":"Source of the start price.","type":"string","enum":["CURRENT","INITIAL_PRICE","RECOMMENDED_PRICE","FORMER_RETAIL_PRICE","MIN_PRICE","MAX_PRICE","VALUE"]},"start_price_value":{"description":"Custom start price value. Required when `start_price`=VALUE.","type":"number","format":"float","minimum":0.01},"reset_price_and_settings":{"description":"When updating: 1 to wipe per-product limit progress and force a reset.","type":"integer","enum":[0,1]},"calculate_orders_by":{"description":"Whether order counts are tracked per ASIN or per SKU.","type":"string","enum":["ASIN","SKU"]},"day_in_week":{"description":"Days when the Push runs. Items must be unique. Concatenated string max 100 chars.","type":"array","items":{"type":"string","enum":["MON","TUE","WED","THU","FRI","SAT","SUN"]}},"round_price":{"description":"1 to round the resulting price to `round_step`.","type":"integer","enum":[0,1]},"round_step":{"description":"Rounding step (e.g. 0.05). Used when `round_price`=1.","type":"number","format":"float"},"optimizationLimits":{"description":"Limit rules driving the price step on each cycle. Max 50 entries.","type":"array","items":{"$ref":"#/components/schemas/OptimizationLimit"}}}},{"$ref":"#/components/schemas/optimizationStrategyDailyPush"}]},"optimizationStrategySamePrice":{"description":"Optimization strategy: Same Price. Tracks a single competitor seller and matches their price (clamped to the configured Min/Max range).","required":["id","type","seller_id"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["samePrice"]},"seller_id":{"description":"Amazon seller id of the competitor whose price should be mirrored.","type":"string","maxLength":45}},"type":"object"},"optimizationStrategySimple":{"description":"Optimization strategy: Simple. Sets a fixed price and re-checks at regular intervals whether it is still the configured target.","required":["id","type","value"],"properties":{"id":{"description":"Optimization id.","type":"integer"},"type":{"description":"Strategy type discriminator.","type":"string","enum":["simple"]},"value":{"description":"Fixed listing price in the marketplace currency.","type":"number","format":"float","minimum":0.01}},"type":"object"},"AmazonProductPriceChange":{"description":"Audit record of a price change pushed to Amazon. Stored in the per-customer table `price_upload.price_upload_v2_{customerId}` and exposes both the new price and the previous (old) price for B2C and/or B2B offers.","required":["id","amazon_product_id","marketplace_id","sku","created","is_uploaded","offer_types"],"properties":{"id":{"description":"Primary key.","type":"integer"},"amazon_product_id":{"description":"Amazon product id this change belongs to.","type":"integer"},"marketplace_id":{"description":"Amazon marketplace id.","type":"string"},"sku":{"description":"Seller SKU.","type":"string"},"created":{"description":"When the price change was queued.","type":"string","format":"date-time"},"uploaded":{"description":"When the price change was confirmed as uploaded to Amazon.","type":"string","format":"date-time","nullable":true},"is_uploaded":{"description":"1 if the change has been uploaded to Amazon, 0 otherwise.","type":"integer","enum":[0,1]},"b2c_price":{"description":"New B2C listing price.","type":"number","format":"float"},"b2c_old_price":{"description":"Previous B2C listing price.","type":"number","format":"float"},"b2c_price_min":{"description":"Configured B2C minimum price at upload time.","type":"number","format":"float","nullable":true},"b2c_price_max":{"description":"Configured B2C maximum price at upload time.","type":"number","format":"float","nullable":true},"b2c_shipping_price":{"description":"B2C shipping price applied at upload time.","type":"number","format":"float"},"b2c_strategy":{"description":"B2C strategy key in effect at upload time.","type":"string","nullable":true},"b2c_standard_price":{"description":"B2C standard (former retail) price at upload time.","type":"number","format":"float"},"b2b_price":{"description":"New B2B listing price.","type":"number","format":"float"},"b2b_old_price":{"description":"Previous B2B listing price.","type":"number","format":"float"},"b2b_price_min":{"description":"Configured B2B minimum price at upload time.","type":"number","format":"float","nullable":true},"b2b_price_max":{"description":"Configured B2B maximum price at upload time.","type":"number","format":"float","nullable":true},"b2b_shipping_price":{"description":"B2B shipping price applied at upload time.","type":"number","format":"float"},"b2b_strategy":{"description":"B2B strategy key in effect at upload time.","type":"string","nullable":true},"b2b_standard_price":{"description":"B2B standard (former retail) price at upload time.","type":"number","format":"float"},"offer_types":{"description":"Offer types affected by this change (`B2B`, `B2C`, or both, comma-separated).","type":"string"}},"type":"object"},"LastTwentyPricesResponse":{"description":"The last 20 price changes for a product.","properties":{"customerId":{"description":"Customer ID.","type":"integer"},"productId":{"description":"Product ID.","type":"integer"},"lastChanges":{"description":"Up to 20 most recent price changes.","type":"array","items":{"$ref":"#/components/schemas/PriceChangeFull"}}},"type":"object"},"PriceHistoryTimelineResponse":{"description":"Aggregated price history timeline for a product.","properties":{"customerId":{"description":"Customer ID.","type":"string"},"productId":{"description":"Product ID.","type":"string"},"timeline":{"description":"Map of `YYYY-MM-DD HH:MM:SS` timestamps to aggregated timeline data.","type":"object","additionalProperties":{"$ref":"#/components/schemas/TimelineData"}}},"type":"object"},"PriceChangeFull":{"description":"A single price change with B2B and B2C breakdown.","properties":{"id":{"type":"string","format":"uuid"},"b2b":{"$ref":"#/components/schemas/PriceChange"},"b2c":{"$ref":"#/components/schemas/PriceChange"}},"type":"object"},"PriceChange":{"description":"OHLC price change for a single offer type.","properties":{"open":{"description":"Open price.","type":"number","format":"float"},"close":{"description":"Close price.","type":"number","format":"float"},"min":{"description":"Minimum price.","type":"number","format":"float"},"max":{"description":"Maximum price.","type":"number","format":"float"},"buybox_winner":{"description":"Whether the buybox was won.","type":"boolean"},"created":{"description":"Created date.","type":"string","format":"date-time"},"strategy":{"description":"Strategy in effect.","type":"string"}},"type":"object"},"TimelineData":{"description":"Aggregated OHLC timeline bucket.","properties":{"open":{"description":"Open price.","type":"number","format":"float"},"close":{"description":"Close price.","type":"number","format":"float"},"min":{"description":"Minimum price.","type":"number","format":"float"},"max":{"description":"Maximum price.","type":"number","format":"float"},"lowest_price":{"description":"Lowest price.","type":"number","format":"float"},"highest_price":{"description":"Highest price.","type":"number","format":"float"},"buybox_winner":{"description":"Whether the buybox was won.","type":"boolean"},"created":{"description":"Created date.","type":"string","format":"date-time"},"strategy":{"description":"Strategies in effect for the bucket.","type":"array","items":{"type":"string"}}},"type":"object"}},"securitySchemes":{"oauth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://auth.sellerlogic.com/oauth2/token","scopes":{}}}}}}}