{"openapi":"3.1.0","info":{"title":"E-commerce Catalog Intelligence API","version":"1.0.0","description":"Normalize, validate, and review caller-supplied product catalogs from CSV, JSON, or structured records before they are published to a sales channel. Paid with x402 exact USDC on Base. No account is required.","contact":{"email":"support@brainiac.software"},"x-guidance":"BRAINIAC.software is a pay-per-call API for software agents. No account or API key is required.\nPayment uses the x402 protocol with exact USDC on Base (chain id 8453). Each POST operation has a fixed USD price.\nHow to call an operation:\n1. POST a JSON body matching the operation's requestBody schema to the operation path. Include an Idempotency-Key header (64 hex characters, 32 random bytes).\n2. If you have not paid, the server responds 402 with payment requirements in the body. Pay the exact amount to the payTo address on Base.\n3. Retry the identical request with the same Idempotency-Key and add a payment-signature header containing the x402 payment payload. On success (200) the operation result is returned.\n4. Reuse the same Idempotency-Key only for retries of the same operation and request body; it will not be charged twice.\nAll outputs are compliance prechecks, drafts, or data lookups for human review. They are not official determinations, legal advice, identity confirmation, or certified filings. Verify time-sensitive or official data with the cited source before acting."},"servers":[{"url":"https://www.brainiac.software"}],"paths":{"/api/v1/ecommerce-catalog/product-normalize":{"post":{"operationId":"normalize_product_records","summary":"Normalize product records","description":"Read a brainiac-catalog-v1 or Google Merchant subset feed and standardize sku, title, category, price, availability, and GTIN. A dollar sign is not treated as USD, and missing materials or dimensions are not filled in.","tags":["ecommerce-catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"products":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"brand":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":300},"googleProductCategory":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","minLength":1,"maxLength":12},"availability":{"type":"string","minLength":1,"maxLength":40},"condition":{"type":"string","minLength":1,"maxLength":40},"gtin":{"type":"string","minLength":1,"maxLength":20},"mpn":{"type":"string","minLength":1,"maxLength":80},"parentSku":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":1,"maxLength":80},"size":{"type":"string","minLength":1,"maxLength":80},"material":{"type":"string","minLength":1,"maxLength":200},"certification":{"type":"string","minLength":1,"maxLength":200},"link":{"type":"string","minLength":1,"maxLength":2000},"imageUrl":{"type":"string","minLength":1,"maxLength":2000},"additionalImageUrls":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"imageAlt":{"type":"string","minLength":1,"maxLength":300},"imageWidth":{"type":"integer","minimum":0,"maximum":20000},"imageHeight":{"type":"integer","minimum":0,"maximum":20000},"weight":{"type":"number","minimum":0,"maximum":1000000000},"weightUnit":{"type":"string","minLength":1,"maxLength":20},"length":{"type":"number","minimum":0,"maximum":1000000000},"width":{"type":"number","minimum":0,"maximum":1000000000},"height":{"type":"number","minimum":0,"maximum":1000000000},"dimensionUnit":{"type":"string","minLength":1,"maxLength":20},"attributes":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["name","value"],"additionalProperties":false}},"attributesText":{"type":"string","minLength":1,"maxLength":20000}},"additionalProperties":false}},"csv":{"type":"string","minLength":1,"maxLength":200000},"json":{"type":"string","minLength":1,"maxLength":200000},"file":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["text/csv","application/json","text/plain"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000}},"required":["mediaType","fileBase64"],"additionalProperties":false}},"additionalProperties":false},"example":{"csv":"sku,title,description,brand,category,price,currency,availability,condition,gtin,imageUrl,imageAlt,material\n mug-1 ,  Blue   Mug ,A sturdy blue mug for tea.,Northwind,Home / Kitchen,$12.50,,in stock,new,036000291452,https://cdn.example/mug.jpg,Blue mug,\nmug-1,Blue Mug,A sturdy blue mug for tea.,Northwind,Home > Kitchen,12.50,USD,in_stock,new,036000291453,https://cdn.example/mug.jpg,Blue mug,stoneware\n"}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"channelPublished":{"type":"boolean"},"specificationsInvented":{"type":"boolean"},"status":{"type":"string"},"format":{"type":"string"},"productCount":{"type":"number"},"products":{"type":"array","items":{"type":"object","properties":{"row":{"type":"number"},"productRef":{"type":"string"},"sku":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"brand":{"type":"string"},"category":{"type":"string"},"price":{"type":"number"},"currency":{"type":"string"},"availability":{"type":"string"},"condition":{"type":"string"},"gtin":{"type":"string"},"mpn":{"type":"string"},"parentSku":{"type":"string"},"color":{"type":"string"},"size":{"type":"string"},"material":{"type":"string"},"certification":{"type":"string"},"link":{"type":"string"},"imageUrl":{"type":"string"},"additionalImageUrls":{"type":"array","items":{}},"imageAlt":{"type":"string"},"weightUnit":{"type":"string"},"dimensionUnit":{"type":"string"},"attributes":{"type":"array","items":{}}},"additionalProperties":true}},"issues":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"corrections":{"type":"array","items":{"type":"object","properties":{"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"},"replacement":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-03T09:00:00.000Z","channelPublished":false,"specificationsInvented":false,"status":"normalized","format":"brainiac-catalog-v1","productCount":2,"products":[{"row":2,"productRef":"mug-1","sku":"mug-1","title":"Blue Mug","description":"A sturdy blue mug for tea.","brand":"Northwind","category":"Home > Kitchen","price":12.5,"currency":"","availability":"in_stock","condition":"new","gtin":"036000291452","mpn":"","parentSku":"","color":"","size":"","material":"","certification":"","link":"","imageUrl":"https://cdn.example/mug.jpg","additionalImageUrls":[],"imageAlt":"Blue mug","weightUnit":"","dimensionUnit":"","attributes":[]},{"row":3,"productRef":"mug-1","sku":"mug-1","title":"Blue Mug","description":"A sturdy blue mug for tea.","brand":"Northwind","category":"Home > Kitchen","price":12.5,"currency":"USD","availability":"in_stock","condition":"new","gtin":"036000291453","mpn":"","parentSku":"","color":"","size":"","material":"stoneware","certification":"","link":"","imageUrl":"https://cdn.example/mug.jpg","additionalImageUrls":[],"imageAlt":"Blue mug","weightUnit":"","dimensionUnit":"","attributes":[{"name":"material","value":"stoneware","source":"field"}]}],"issues":[{"kind":"unavailable","code":"currency_unspecified","productRef":"mug-1","row":2,"field":"currency","detail":"A dollar sign is not a currency. USD was not assumed."},{"kind":"conflict","code":"check_digit","productRef":"mug-1","row":3,"field":"gtin","detail":"The GTIN check digit does not match. The digits were not corrected."},{"kind":"duplicate","code":"duplicate_sku","productRef":"mug-1","row":2,"field":"sku","detail":"The sku mug-1 appears on 2 products."},{"kind":"duplicate","code":"duplicate_sku","productRef":"mug-1","row":3,"field":"sku","detail":"The sku mug-1 appears on 2 products."},{"kind":"conflict","code":"price_conflict","productRef":"mug-1","row":2,"field":"price","detail":"Products with the same sku have different prices or currencies. The prices were not averaged."},{"kind":"conflict","code":"price_conflict","productRef":"mug-1","row":3,"field":"price","detail":"Products with the same sku have different prices or currencies. The prices were not averaged."},{"kind":"conflict","code":"gtin_conflict","productRef":"mug-1","row":2,"field":"gtin","detail":"Products with the same sku have different GTINs. Neither GTIN was chosen."},{"kind":"conflict","code":"gtin_conflict","productRef":"mug-1","row":3,"field":"gtin","detail":"Products with the same sku have different GTINs. Neither GTIN was chosen."}],"corrections":[{"productRef":"mug-1","row":2,"field":"sku","code":"whitespace","detail":"Extra whitespace was removed from the sku.","replacement":"mug-1"},{"productRef":"mug-1","row":2,"field":"title","code":"whitespace","detail":"Extra whitespace was collapsed in the title.","replacement":"Blue Mug"},{"productRef":"mug-1","row":2,"field":"category","code":"separators","detail":"Category separators were standardized. The category words were not changed.","replacement":"Home > Kitchen"},{"productRef":"mug-1","row":2,"field":"availability","code":"mapped","detail":"The availability token was mapped to the supported value.","replacement":"in_stock"}],"limitations":["No sales channel was contacted and no product was published.","Specifications, dimensions, materials, and certifications are not invented.","A category is marked inferred only when one caller-supplied keyword matches the title. It is not written over a supplied category.","Feed checks cover brainiac-catalog-v1 and a documented Google Merchant subset. They are not a channel approval.","Image files are not downloaded. Only supplied URLs and metadata are checked."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/ecommerce-catalog/product-attribute-extract":{"post":{"operationId":"extract_product_attributes","summary":"Extract product attributes","description":"Read structured attribute pairs and lines labeled Attribute: name | value. Unlabeled description prose is not turned into a specification.","tags":["ecommerce-catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"products":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"brand":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":300},"googleProductCategory":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","minLength":1,"maxLength":12},"availability":{"type":"string","minLength":1,"maxLength":40},"condition":{"type":"string","minLength":1,"maxLength":40},"gtin":{"type":"string","minLength":1,"maxLength":20},"mpn":{"type":"string","minLength":1,"maxLength":80},"parentSku":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":1,"maxLength":80},"size":{"type":"string","minLength":1,"maxLength":80},"material":{"type":"string","minLength":1,"maxLength":200},"certification":{"type":"string","minLength":1,"maxLength":200},"link":{"type":"string","minLength":1,"maxLength":2000},"imageUrl":{"type":"string","minLength":1,"maxLength":2000},"additionalImageUrls":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"imageAlt":{"type":"string","minLength":1,"maxLength":300},"imageWidth":{"type":"integer","minimum":0,"maximum":20000},"imageHeight":{"type":"integer","minimum":0,"maximum":20000},"weight":{"type":"number","minimum":0,"maximum":1000000000},"weightUnit":{"type":"string","minLength":1,"maxLength":20},"length":{"type":"number","minimum":0,"maximum":1000000000},"width":{"type":"number","minimum":0,"maximum":1000000000},"height":{"type":"number","minimum":0,"maximum":1000000000},"dimensionUnit":{"type":"string","minLength":1,"maxLength":20},"attributes":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["name","value"],"additionalProperties":false}},"attributesText":{"type":"string","minLength":1,"maxLength":20000}},"additionalProperties":false}},"csv":{"type":"string","minLength":1,"maxLength":200000},"json":{"type":"string","minLength":1,"maxLength":200000},"file":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["text/csv","application/json","text/plain"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000}},"required":["mediaType","fileBase64"],"additionalProperties":false}},"additionalProperties":false},"example":{"products":[{"sku":"mug-1","title":"Blue Mug","description":"A sturdy mug. Cotton is mentioned only as prose.","attributesText":"Attribute: material | stoneware\nCotton is not labeled.\n"},{"sku":"mug-2","title":"Green Mug","color":"Green","attributes":[{"name":"material","value":"stoneware"},{"name":"material","value":"porcelain"}]}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"channelPublished":{"type":"boolean"},"specificationsInvented":{"type":"boolean"},"status":{"type":"string"},"productCount":{"type":"number"},"attributes":{"type":"array","items":{"type":"object","properties":{"productRef":{"type":"string"},"row":{"type":"number"},"name":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"},"inferred":{"type":"boolean"}},"additionalProperties":true}},"issues":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-03T09:00:00.000Z","channelPublished":false,"specificationsInvented":false,"status":"extracted","productCount":2,"attributes":[{"productRef":"mug-1","row":1,"name":"material","value":"stoneware","source":"labeled_line","inferred":false},{"productRef":"mug-2","row":2,"name":"material","value":"stoneware","source":"field","inferred":false},{"productRef":"mug-2","row":2,"name":"material","value":"porcelain","source":"field","inferred":false},{"productRef":"mug-2","row":2,"name":"color","value":"Green","source":"field","inferred":false}],"issues":[{"kind":"conflict","code":"attribute_conflict","productRef":"mug-2","row":2,"field":"material","detail":"The same attribute has more than one value. Neither value was chosen."}],"limitations":["No sales channel was contacted and no product was published.","Specifications, dimensions, materials, and certifications are not invented.","A category is marked inferred only when one caller-supplied keyword matches the title. It is not written over a supplied category.","Feed checks cover brainiac-catalog-v1 and a documented Google Merchant subset. They are not a channel approval.","Image files are not downloaded. Only supplied URLs and metadata are checked."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/ecommerce-catalog/product-variant-validate":{"post":{"operationId":"validate_product_variants","summary":"Validate product variants","description":"Group products by the supplied parent sku and flag repeated color and size pairs, price disagreements, and parents that are not in the request. Missing options are not invented.","tags":["ecommerce-catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"products":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"brand":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":300},"googleProductCategory":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","minLength":1,"maxLength":12},"availability":{"type":"string","minLength":1,"maxLength":40},"condition":{"type":"string","minLength":1,"maxLength":40},"gtin":{"type":"string","minLength":1,"maxLength":20},"mpn":{"type":"string","minLength":1,"maxLength":80},"parentSku":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":1,"maxLength":80},"size":{"type":"string","minLength":1,"maxLength":80},"material":{"type":"string","minLength":1,"maxLength":200},"certification":{"type":"string","minLength":1,"maxLength":200},"link":{"type":"string","minLength":1,"maxLength":2000},"imageUrl":{"type":"string","minLength":1,"maxLength":2000},"additionalImageUrls":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"imageAlt":{"type":"string","minLength":1,"maxLength":300},"imageWidth":{"type":"integer","minimum":0,"maximum":20000},"imageHeight":{"type":"integer","minimum":0,"maximum":20000},"weight":{"type":"number","minimum":0,"maximum":1000000000},"weightUnit":{"type":"string","minLength":1,"maxLength":20},"length":{"type":"number","minimum":0,"maximum":1000000000},"width":{"type":"number","minimum":0,"maximum":1000000000},"height":{"type":"number","minimum":0,"maximum":1000000000},"dimensionUnit":{"type":"string","minLength":1,"maxLength":20},"attributes":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["name","value"],"additionalProperties":false}},"attributesText":{"type":"string","minLength":1,"maxLength":20000}},"additionalProperties":false}},"csv":{"type":"string","minLength":1,"maxLength":200000},"json":{"type":"string","minLength":1,"maxLength":200000},"file":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["text/csv","application/json","text/plain"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000}},"required":["mediaType","fileBase64"],"additionalProperties":false}},"additionalProperties":false},"example":{"products":[{"sku":"mug-blue","parentSku":"mug","title":"Blue Mug","color":"Blue","size":"M","price":12,"currency":"USD"},{"sku":"mug-blue-2","parentSku":"mug","title":"Blue Mug","color":"Blue","size":"M","price":14,"currency":"EUR"},{"sku":"orphan","parentSku":"missing-parent","title":"Red Mug","color":"Red","size":"S","price":10,"currency":"USD"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"channelPublished":{"type":"boolean"},"specificationsInvented":{"type":"boolean"},"status":{"type":"string"},"productCount":{"type":"number"},"variantCount":{"type":"number"},"issues":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-03T09:00:00.000Z","channelPublished":false,"specificationsInvented":false,"status":"checked","productCount":3,"variantCount":3,"issues":[{"kind":"missing","code":"parent_missing","productRef":"mug-blue","row":1,"field":"parentSku","detail":"No product in this request uses this parent sku. A parent product was not created."},{"kind":"missing","code":"parent_missing","productRef":"mug-blue-2","row":2,"field":"parentSku","detail":"No product in this request uses this parent sku. A parent product was not created."},{"kind":"duplicate","code":"duplicate_variant","productRef":"mug-blue","row":1,"field":"size","detail":"Another variant of this parent has the same color and size."},{"kind":"duplicate","code":"duplicate_variant","productRef":"mug-blue-2","row":2,"field":"size","detail":"Another variant of this parent has the same color and size."},{"kind":"conflict","code":"price_conflict","productRef":"mug-blue","row":1,"field":"price","detail":"Variants of this parent have different prices or currencies. The prices were not averaged."},{"kind":"conflict","code":"price_conflict","productRef":"mug-blue-2","row":2,"field":"price","detail":"Variants of this parent have different prices or currencies. The prices were not averaged."},{"kind":"missing","code":"parent_missing","productRef":"orphan","row":3,"field":"parentSku","detail":"No product in this request uses this parent sku. A parent product was not created."}],"limitations":["No sales channel was contacted and no product was published.","Specifications, dimensions, materials, and certifications are not invented.","A category is marked inferred only when one caller-supplied keyword matches the title. It is not written over a supplied category.","Feed checks cover brainiac-catalog-v1 and a documented Google Merchant subset. They are not a channel approval.","Image files are not downloaded. Only supplied URLs and metadata are checked."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/ecommerce-catalog/product-description-quality-check":{"post":{"operationId":"check_product_description_quality","summary":"Check product description quality","description":"Flag missing, placeholder, HTML, and very short descriptions. When minLength is omitted, descriptions shorter than 40 characters are flagged. No description text is generated.","tags":["ecommerce-catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"products":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"brand":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":300},"googleProductCategory":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","minLength":1,"maxLength":12},"availability":{"type":"string","minLength":1,"maxLength":40},"condition":{"type":"string","minLength":1,"maxLength":40},"gtin":{"type":"string","minLength":1,"maxLength":20},"mpn":{"type":"string","minLength":1,"maxLength":80},"parentSku":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":1,"maxLength":80},"size":{"type":"string","minLength":1,"maxLength":80},"material":{"type":"string","minLength":1,"maxLength":200},"certification":{"type":"string","minLength":1,"maxLength":200},"link":{"type":"string","minLength":1,"maxLength":2000},"imageUrl":{"type":"string","minLength":1,"maxLength":2000},"additionalImageUrls":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"imageAlt":{"type":"string","minLength":1,"maxLength":300},"imageWidth":{"type":"integer","minimum":0,"maximum":20000},"imageHeight":{"type":"integer","minimum":0,"maximum":20000},"weight":{"type":"number","minimum":0,"maximum":1000000000},"weightUnit":{"type":"string","minLength":1,"maxLength":20},"length":{"type":"number","minimum":0,"maximum":1000000000},"width":{"type":"number","minimum":0,"maximum":1000000000},"height":{"type":"number","minimum":0,"maximum":1000000000},"dimensionUnit":{"type":"string","minLength":1,"maxLength":20},"attributes":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["name","value"],"additionalProperties":false}},"attributesText":{"type":"string","minLength":1,"maxLength":20000}},"additionalProperties":false}},"csv":{"type":"string","minLength":1,"maxLength":200000},"json":{"type":"string","minLength":1,"maxLength":200000},"file":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["text/csv","application/json","text/plain"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000}},"required":["mediaType","fileBase64"],"additionalProperties":false},"minLength":{"type":"integer","minimum":1,"maximum":5000},"maxTitleLength":{"type":"integer","minimum":1,"maximum":500}},"additionalProperties":false},"example":{"products":[{"sku":"mug-1","title":"Blue Mug","description":"<p>A sturdy mug.</p>"},{"sku":"mug-2","title":"Placeholder","description":"TODO"},{"sku":"mug-3","title":"Plain Bowl"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"channelPublished":{"type":"boolean"},"specificationsInvented":{"type":"boolean"},"status":{"type":"string"},"productCount":{"type":"number"},"minLength":{"type":"number"},"maxTitleLength":{"type":"number"},"issues":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"corrections":{"type":"array","items":{"type":"object","properties":{"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"},"replacement":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-03T09:00:00.000Z","channelPublished":false,"specificationsInvented":false,"status":"checked","productCount":3,"minLength":40,"maxTitleLength":150,"issues":[{"kind":"conflict","code":"html","productRef":"mug-1","row":1,"field":"description","detail":"The description contains HTML tags. The tags can be removed without adding words."},{"kind":"conflict","code":"short","productRef":"mug-1","row":1,"field":"description","detail":"The description is shorter than 40 characters. It was not expanded."},{"kind":"conflict","code":"placeholder","productRef":"mug-2","row":2,"field":"description","detail":"The description is a placeholder. A replacement was not written."},{"kind":"conflict","code":"short","productRef":"mug-2","row":2,"field":"description","detail":"The description is shorter than 40 characters. It was not expanded."},{"kind":"missing","code":"missing","productRef":"mug-3","row":3,"field":"description","detail":"The product has no description. One was not generated."}],"corrections":[{"productRef":"mug-1","row":1,"field":"description","code":"html","detail":"Remove the HTML tags. No new sentence was added.","replacement":"A sturdy mug."},{"productRef":"mug-3","row":3,"field":"description","code":"missing","detail":"Add a description supplied by the seller.","replacement":""}],"limitations":["No sales channel was contacted and no product was published.","Specifications, dimensions, materials, and certifications are not invented.","A category is marked inferred only when one caller-supplied keyword matches the title. It is not written over a supplied category.","Feed checks cover brainiac-catalog-v1 and a documented Google Merchant subset. They are not a channel approval.","Image files are not downloaded. Only supplied URLs and metadata are checked."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/ecommerce-catalog/product-category-classify":{"post":{"operationId":"classify_product_categories","summary":"Classify product categories","description":"Match a supplied category to the caller taxonomy, or mark one keyword match as inferred. Several matches are a conflict, and no category is chosen or invented.","tags":["ecommerce-catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"products":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"brand":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":300},"googleProductCategory":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","minLength":1,"maxLength":12},"availability":{"type":"string","minLength":1,"maxLength":40},"condition":{"type":"string","minLength":1,"maxLength":40},"gtin":{"type":"string","minLength":1,"maxLength":20},"mpn":{"type":"string","minLength":1,"maxLength":80},"parentSku":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":1,"maxLength":80},"size":{"type":"string","minLength":1,"maxLength":80},"material":{"type":"string","minLength":1,"maxLength":200},"certification":{"type":"string","minLength":1,"maxLength":200},"link":{"type":"string","minLength":1,"maxLength":2000},"imageUrl":{"type":"string","minLength":1,"maxLength":2000},"additionalImageUrls":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"imageAlt":{"type":"string","minLength":1,"maxLength":300},"imageWidth":{"type":"integer","minimum":0,"maximum":20000},"imageHeight":{"type":"integer","minimum":0,"maximum":20000},"weight":{"type":"number","minimum":0,"maximum":1000000000},"weightUnit":{"type":"string","minLength":1,"maxLength":20},"length":{"type":"number","minimum":0,"maximum":1000000000},"width":{"type":"number","minimum":0,"maximum":1000000000},"height":{"type":"number","minimum":0,"maximum":1000000000},"dimensionUnit":{"type":"string","minLength":1,"maxLength":20},"attributes":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["name","value"],"additionalProperties":false}},"attributesText":{"type":"string","minLength":1,"maxLength":20000}},"additionalProperties":false}},"csv":{"type":"string","minLength":1,"maxLength":200000},"json":{"type":"string","minLength":1,"maxLength":200000},"file":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["text/csv","application/json","text/plain"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000}},"required":["mediaType","fileBase64"],"additionalProperties":false},"taxonomy":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"category":{"type":"string","minLength":1,"maxLength":300},"terms":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"required":["category"],"additionalProperties":false}}},"additionalProperties":false},"example":{"taxonomy":[{"category":"Home > Kitchen","terms":["mug"]},{"category":"Apparel","terms":["shirt"]}],"products":[{"sku":"mug-1","title":"Blue Mug","category":"Home / Kitchen"},{"sku":"shirt-1","title":"Cotton Shirt"},{"sku":"mix-1","title":"Mug shirt set"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"channelPublished":{"type":"boolean"},"specificationsInvented":{"type":"boolean"},"status":{"type":"string"},"productCount":{"type":"number"},"classifications":{"type":"array","items":{"type":"object","properties":{"productRef":{"type":"string"},"row":{"type":"number"},"suppliedCategory":{"type":"string"},"matchedCategory":{"type":"string"},"suggestedCategory":{"type":"string"},"status":{"type":"string"},"inferred":{"type":"boolean"},"detail":{"type":"string"}},"additionalProperties":true}},"issues":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-03T09:00:00.000Z","channelPublished":false,"specificationsInvented":false,"status":"classified","productCount":3,"classifications":[{"productRef":"mug-1","row":1,"suppliedCategory":"Home > Kitchen","matchedCategory":"Home > Kitchen","suggestedCategory":"","status":"observed","inferred":false,"detail":"The supplied category matches the taxonomy. It was not inferred."},{"productRef":"shirt-1","row":2,"suppliedCategory":"","matchedCategory":"","suggestedCategory":"Apparel","status":"inferred","inferred":true,"detail":"One caller-supplied keyword matched the title. The category was not copied onto the product."},{"productRef":"mix-1","row":3,"suppliedCategory":"","matchedCategory":"","suggestedCategory":"","status":"conflict","inferred":false,"detail":"More than one keyword rule matched: Home > Kitchen, Apparel. No category was chosen."}],"issues":[{"kind":"inferred","code":"category_inferred","productRef":"shirt-1","row":2,"field":"category","detail":"One caller-supplied keyword matched the title. The category was not copied onto the product."},{"kind":"conflict","code":"category","productRef":"mix-1","row":3,"field":"category","detail":"More than one keyword rule matched: Home > Kitchen, Apparel. No category was chosen."}],"limitations":["No sales channel was contacted and no product was published.","Specifications, dimensions, materials, and certifications are not invented.","A category is marked inferred only when one caller-supplied keyword matches the title. It is not written over a supplied category.","Feed checks cover brainiac-catalog-v1 and a documented Google Merchant subset. They are not a channel approval.","Image files are not downloaded. Only supplied URLs and metadata are checked."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.04"},"protocols":[{"x402":{}}]}}},"/api/v1/ecommerce-catalog/product-feed-validate":{"post":{"operationId":"validate_a_product_feed","summary":"Validate a product feed","description":"Check brainiac-catalog-v1 or the documented Google Merchant subset, plus any required fields and types in the caller schema. Unknown columns are ignored.","tags":["ecommerce-catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"products":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"brand":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":300},"googleProductCategory":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","minLength":1,"maxLength":12},"availability":{"type":"string","minLength":1,"maxLength":40},"condition":{"type":"string","minLength":1,"maxLength":40},"gtin":{"type":"string","minLength":1,"maxLength":20},"mpn":{"type":"string","minLength":1,"maxLength":80},"parentSku":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":1,"maxLength":80},"size":{"type":"string","minLength":1,"maxLength":80},"material":{"type":"string","minLength":1,"maxLength":200},"certification":{"type":"string","minLength":1,"maxLength":200},"link":{"type":"string","minLength":1,"maxLength":2000},"imageUrl":{"type":"string","minLength":1,"maxLength":2000},"additionalImageUrls":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"imageAlt":{"type":"string","minLength":1,"maxLength":300},"imageWidth":{"type":"integer","minimum":0,"maximum":20000},"imageHeight":{"type":"integer","minimum":0,"maximum":20000},"weight":{"type":"number","minimum":0,"maximum":1000000000},"weightUnit":{"type":"string","minLength":1,"maxLength":20},"length":{"type":"number","minimum":0,"maximum":1000000000},"width":{"type":"number","minimum":0,"maximum":1000000000},"height":{"type":"number","minimum":0,"maximum":1000000000},"dimensionUnit":{"type":"string","minLength":1,"maxLength":20},"attributes":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["name","value"],"additionalProperties":false}},"attributesText":{"type":"string","minLength":1,"maxLength":20000}},"additionalProperties":false}},"csv":{"type":"string","minLength":1,"maxLength":200000},"json":{"type":"string","minLength":1,"maxLength":200000},"file":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["text/csv","application/json","text/plain"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000}},"required":["mediaType","fileBase64"],"additionalProperties":false},"schema":{"type":"object","properties":{"format":{"type":"string","enum":["brainiac-catalog-v1","google-merchant-subset"]},"required":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"fields":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"type":{"type":"string","enum":["string","number","url","gtin","currency","identifier"]}},"required":["name","type"],"additionalProperties":false}}},"additionalProperties":false}},"additionalProperties":false},"example":{"schema":{"format":"google-merchant-subset","required":["brand"],"fields":[{"name":"gtin","type":"gtin"},{"name":"link","type":"url"}]},"csv":"id,title,description,link,image_link,availability,price,gtin,secret_spec\nmug-1,Blue Mug,,https://shop.example/mug,,in_stock,12.50 USD,036000291453,invented\n"}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"channelPublished":{"type":"boolean"},"specificationsInvented":{"type":"boolean"},"status":{"type":"string"},"format":{"type":"string"},"requiredFields":{"type":"array","items":{"type":"string"}},"productCount":{"type":"number"},"issues":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"corrections":{"type":"array","items":{}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-03T09:00:00.000Z","channelPublished":false,"specificationsInvented":false,"status":"validated","format":"google-merchant-subset","requiredFields":["sku","title","description","link","imageUrl","availability","price","brand"],"productCount":1,"issues":[{"kind":"conflict","code":"check_digit","productRef":"mug-1","row":2,"field":"gtin","detail":"The GTIN check digit does not match. The digits were not corrected."},{"kind":"unavailable","code":"unknown_column","productRef":"","row":0,"field":"secret_spec","detail":"The column secret_spec is not part of the catalog format and was ignored."},{"kind":"missing","code":"missing","productRef":"mug-1","row":2,"field":"description","detail":"The google-merchant-subset feed requires description."},{"kind":"missing","code":"missing","productRef":"mug-1","row":2,"field":"imageUrl","detail":"The google-merchant-subset feed requires imageUrl."},{"kind":"missing","code":"missing","productRef":"mug-1","row":2,"field":"brand","detail":"The google-merchant-subset feed requires brand."},{"kind":"conflict","code":"type","productRef":"mug-1","row":2,"field":"gtin","detail":"The field is not a GTIN with a valid check digit."}],"corrections":[],"limitations":["No sales channel was contacted and no product was published.","Specifications, dimensions, materials, and certifications are not invented.","A category is marked inferred only when one caller-supplied keyword matches the title. It is not written over a supplied category.","Feed checks cover brainiac-catalog-v1 and a documented Google Merchant subset. They are not a channel approval.","Image files are not downloaded. Only supplied URLs and metadata are checked."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/api/v1/ecommerce-catalog/product-image-metadata-audit":{"post":{"operationId":"audit_product_image_metadata","summary":"Audit product image metadata","description":"Check supplied image URLs, alt text, filename extensions, and supplied pixel sizes. Image files are not downloaded and alt text is not generated.","tags":["ecommerce-catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"products":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"brand":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":300},"googleProductCategory":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","minLength":1,"maxLength":12},"availability":{"type":"string","minLength":1,"maxLength":40},"condition":{"type":"string","minLength":1,"maxLength":40},"gtin":{"type":"string","minLength":1,"maxLength":20},"mpn":{"type":"string","minLength":1,"maxLength":80},"parentSku":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":1,"maxLength":80},"size":{"type":"string","minLength":1,"maxLength":80},"material":{"type":"string","minLength":1,"maxLength":200},"certification":{"type":"string","minLength":1,"maxLength":200},"link":{"type":"string","minLength":1,"maxLength":2000},"imageUrl":{"type":"string","minLength":1,"maxLength":2000},"additionalImageUrls":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"imageAlt":{"type":"string","minLength":1,"maxLength":300},"imageWidth":{"type":"integer","minimum":0,"maximum":20000},"imageHeight":{"type":"integer","minimum":0,"maximum":20000},"weight":{"type":"number","minimum":0,"maximum":1000000000},"weightUnit":{"type":"string","minLength":1,"maxLength":20},"length":{"type":"number","minimum":0,"maximum":1000000000},"width":{"type":"number","minimum":0,"maximum":1000000000},"height":{"type":"number","minimum":0,"maximum":1000000000},"dimensionUnit":{"type":"string","minLength":1,"maxLength":20},"attributes":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["name","value"],"additionalProperties":false}},"attributesText":{"type":"string","minLength":1,"maxLength":20000}},"additionalProperties":false}},"csv":{"type":"string","minLength":1,"maxLength":200000},"json":{"type":"string","minLength":1,"maxLength":200000},"file":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["text/csv","application/json","text/plain"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000}},"required":["mediaType","fileBase64"],"additionalProperties":false}},"additionalProperties":false},"example":{"products":[{"sku":"mug-1","title":"Blue Mug","imageUrl":"https://cdn.example/mug.jpg","imageAlt":"Blue mug","imageWidth":80,"imageHeight":80},{"sku":"mug-2","title":"Green Mug","imageUrl":"https://cdn.example/mug.jpg"},{"sku":"mug-3","title":"No image"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"channelPublished":{"type":"boolean"},"specificationsInvented":{"type":"boolean"},"status":{"type":"string"},"productCount":{"type":"number"},"imageCount":{"type":"number"},"images":{"type":"array","items":{"type":"object","properties":{"productRef":{"type":"string"},"row":{"type":"number"},"role":{"type":"string"},"url":{"type":"string"},"alt":{"type":"string"},"width":{"type":"number"},"height":{"type":"number"},"extension":{"type":"string"}},"additionalProperties":true}},"issues":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"corrections":{"type":"array","items":{"type":"object","properties":{"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"},"replacement":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-03T09:00:00.000Z","channelPublished":false,"specificationsInvented":false,"status":"checked","productCount":3,"imageCount":2,"images":[{"productRef":"mug-1","row":1,"role":"primary","url":"https://cdn.example/mug.jpg","alt":"Blue mug","width":80,"height":80,"extension":"jpg"},{"productRef":"mug-2","row":2,"role":"primary","url":"https://cdn.example/mug.jpg","alt":"","extension":"jpg"},{"productRef":"mug-3","row":3,"role":"primary","url":"","alt":"","extension":""}],"issues":[{"kind":"missing","code":"missing","productRef":"mug-3","row":3,"field":"imageUrl","detail":"The product has no primary image URL. An image was not fetched or invented."},{"kind":"conflict","code":"dimension_small","productRef":"mug-1","row":1,"field":"imageWidth","detail":"The supplied width is under 100 pixels. The file was not measured."},{"kind":"conflict","code":"dimension_small","productRef":"mug-1","row":1,"field":"imageHeight","detail":"The supplied height is under 100 pixels. The file was not measured."},{"kind":"duplicate","code":"duplicate_image","productRef":"mug-1","row":1,"field":"imageUrl","detail":"This image URL is used more than once in the catalog."},{"kind":"missing","code":"missing","productRef":"mug-2","row":2,"field":"imageAlt","detail":"The primary image has no alt text. Alt text was not generated."},{"kind":"duplicate","code":"duplicate_image","productRef":"mug-2","row":2,"field":"imageUrl","detail":"This image URL is used more than once in the catalog."}],"corrections":[{"productRef":"mug-3","row":3,"field":"imageUrl","code":"missing","detail":"Add the seller's image URL.","replacement":""},{"productRef":"mug-2","row":2,"field":"imageAlt","code":"missing","detail":"Add alt text that names the product.","replacement":""}],"limitations":["No sales channel was contacted and no product was published.","Specifications, dimensions, materials, and certifications are not invented.","A category is marked inferred only when one caller-supplied keyword matches the title. It is not written over a supplied category.","Feed checks cover brainiac-catalog-v1 and a documented Google Merchant subset. They are not a channel approval.","Image files are not downloaded. Only supplied URLs and metadata are checked."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]}}},"/api/v1/ecommerce-catalog/product-health-report":{"post":{"operationId":"report_product_catalog_health","summary":"Report product catalog health","description":"Combine the normalize, attribute, variant, description, category, feed, and image checks. The report does not approve the catalog for a sales channel.","tags":["ecommerce-catalog"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"products":{"maxItems":500,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":80},"title":{"type":"string","minLength":1,"maxLength":500},"description":{"type":"string","minLength":1,"maxLength":20000},"brand":{"type":"string","minLength":1,"maxLength":200},"category":{"type":"string","minLength":1,"maxLength":300},"googleProductCategory":{"type":"string","minLength":1,"maxLength":300},"price":{"type":"number","minimum":0,"maximum":1000000000},"currency":{"type":"string","minLength":1,"maxLength":12},"availability":{"type":"string","minLength":1,"maxLength":40},"condition":{"type":"string","minLength":1,"maxLength":40},"gtin":{"type":"string","minLength":1,"maxLength":20},"mpn":{"type":"string","minLength":1,"maxLength":80},"parentSku":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","minLength":1,"maxLength":80},"size":{"type":"string","minLength":1,"maxLength":80},"material":{"type":"string","minLength":1,"maxLength":200},"certification":{"type":"string","minLength":1,"maxLength":200},"link":{"type":"string","minLength":1,"maxLength":2000},"imageUrl":{"type":"string","minLength":1,"maxLength":2000},"additionalImageUrls":{"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":2000}},"imageAlt":{"type":"string","minLength":1,"maxLength":300},"imageWidth":{"type":"integer","minimum":0,"maximum":20000},"imageHeight":{"type":"integer","minimum":0,"maximum":20000},"weight":{"type":"number","minimum":0,"maximum":1000000000},"weightUnit":{"type":"string","minLength":1,"maxLength":20},"length":{"type":"number","minimum":0,"maximum":1000000000},"width":{"type":"number","minimum":0,"maximum":1000000000},"height":{"type":"number","minimum":0,"maximum":1000000000},"dimensionUnit":{"type":"string","minLength":1,"maxLength":20},"attributes":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"value":{"type":"string","minLength":1,"maxLength":500}},"required":["name","value"],"additionalProperties":false}},"attributesText":{"type":"string","minLength":1,"maxLength":20000}},"additionalProperties":false}},"csv":{"type":"string","minLength":1,"maxLength":200000},"json":{"type":"string","minLength":1,"maxLength":200000},"file":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":180},"mediaType":{"type":"string","enum":["text/csv","application/json","text/plain"]},"fileBase64":{"type":"string","minLength":1,"maxLength":12000000}},"required":["mediaType","fileBase64"],"additionalProperties":false},"minLength":{"type":"integer","minimum":1,"maximum":5000},"maxTitleLength":{"type":"integer","minimum":1,"maximum":500},"taxonomy":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"category":{"type":"string","minLength":1,"maxLength":300},"terms":{"maxItems":20,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}},"required":["category"],"additionalProperties":false}},"schema":{"type":"object","properties":{"format":{"type":"string","enum":["brainiac-catalog-v1","google-merchant-subset"]},"required":{"maxItems":40,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}},"fields":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"type":{"type":"string","enum":["string","number","url","gtin","currency","identifier"]}},"required":["name","type"],"additionalProperties":false}}},"additionalProperties":false}},"additionalProperties":false},"example":{"taxonomy":[{"category":"Home > Kitchen","terms":["mug"]}],"products":[{"sku":"mug-1","title":"Blue Mug","description":"<p>A sturdy mug.</p>","category":"Home / Kitchen","price":12.5,"currency":"USD","imageUrl":"https://cdn.example/mug.jpg","imageAlt":"Blue mug","attributesText":"Attribute: material | stoneware\n"},{"sku":"mug-2","title":"Second","parentSku":"mug-1","color":"Blue","size":"M"}]}}}},"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"description":"Fresh random 32-byte value encoded as 64 hexadecimal characters. Reuse unchanged only for retries of the same operation and request.","schema":{"type":"string","pattern":"^[0-9a-fA-F]{64}$"}}],"responses":{"200":{"description":"Illustrative endpoint-specific JSON response shape. Conditional fields depend on the result and data-source availability.","content":{"application/json":{"schema":{"type":"object","properties":{"checkedAt":{"type":"string"},"channelPublished":{"type":"boolean"},"specificationsInvented":{"type":"boolean"},"status":{"type":"string"},"format":{"type":"string"},"productCount":{"type":"number"},"counts":{"type":"object","properties":{"missing":{"type":"number"},"conflict":{"type":"number"},"duplicate":{"type":"number"},"inferred":{"type":"number"}},"additionalProperties":true},"products":{"type":"array","items":{"type":"object","properties":{"row":{"type":"number"},"productRef":{"type":"string"},"sku":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"brand":{"type":"string"},"category":{"type":"string"},"price":{"type":"number"},"currency":{"type":"string"},"availability":{"type":"string"},"condition":{"type":"string"},"gtin":{"type":"string"},"mpn":{"type":"string"},"parentSku":{"type":"string"},"color":{"type":"string"},"size":{"type":"string"},"material":{"type":"string"},"certification":{"type":"string"},"link":{"type":"string"},"imageUrl":{"type":"string"},"additionalImageUrls":{"type":"array","items":{}},"imageAlt":{"type":"string"},"weightUnit":{"type":"string"},"dimensionUnit":{"type":"string"},"attributes":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true}},"classifications":{"type":"array","items":{"type":"object","properties":{"productRef":{"type":"string"},"row":{"type":"number"},"suppliedCategory":{"type":"string"},"matchedCategory":{"type":"string"},"suggestedCategory":{"type":"string"},"status":{"type":"string"},"inferred":{"type":"boolean"},"detail":{"type":"string"}},"additionalProperties":true}},"issues":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"code":{"type":"string"},"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true}},"corrections":{"type":"array","items":{"type":"object","properties":{"productRef":{"type":"string"},"row":{"type":"number"},"field":{"type":"string"},"code":{"type":"string"},"detail":{"type":"string"},"replacement":{"type":"string"}},"additionalProperties":true}},"limitations":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"example":{"checkedAt":"2026-11-03T09:00:00.000Z","channelPublished":false,"specificationsInvented":false,"status":"needs_attention","format":"brainiac-catalog-v1","productCount":2,"counts":{"missing":4,"conflict":2,"duplicate":0,"inferred":0},"products":[{"row":1,"productRef":"mug-1","sku":"mug-1","title":"Blue Mug","description":"<p>A sturdy mug.</p>","brand":"","category":"Home > Kitchen","price":12.5,"currency":"USD","availability":"","condition":"","gtin":"","mpn":"","parentSku":"","color":"","size":"","material":"","certification":"","link":"","imageUrl":"https://cdn.example/mug.jpg","additionalImageUrls":[],"imageAlt":"Blue mug","weightUnit":"","dimensionUnit":"","attributes":[{"name":"material","value":"stoneware","source":"labeled_line"}]},{"row":2,"productRef":"mug-2","sku":"mug-2","title":"Second","description":"","brand":"","category":"","currency":"","availability":"","condition":"","gtin":"","mpn":"","parentSku":"mug-1","color":"Blue","size":"M","material":"","certification":"","link":"","imageUrl":"","additionalImageUrls":[],"imageAlt":"","weightUnit":"","dimensionUnit":"","attributes":[{"name":"color","value":"Blue","source":"field"},{"name":"size","value":"M","source":"field"}]}],"classifications":[{"productRef":"mug-1","row":1,"suppliedCategory":"Home > Kitchen","matchedCategory":"Home > Kitchen","suggestedCategory":"","status":"observed","inferred":false,"detail":"The supplied category matches the taxonomy. It was not inferred."},{"productRef":"mug-2","row":2,"suppliedCategory":"","matchedCategory":"","suggestedCategory":"","status":"missing","inferred":false,"detail":"No category was supplied and no keyword rule matched. No category was invented."}],"issues":[{"kind":"missing","code":"missing","productRef":"mug-2","row":2,"field":"price","detail":"The product has no price."},{"kind":"missing","code":"missing","productRef":"mug-2","row":2,"field":"description","detail":"The product has no description. One was not generated."},{"kind":"missing","code":"category","productRef":"mug-2","row":2,"field":"category","detail":"No category was supplied and no keyword rule matched. No category was invented."},{"kind":"missing","code":"missing","productRef":"mug-2","row":2,"field":"imageUrl","detail":"The product has no primary image URL. An image was not fetched or invented."},{"kind":"conflict","code":"html","productRef":"mug-1","row":1,"field":"description","detail":"The description contains HTML tags. The tags can be removed without adding words."},{"kind":"conflict","code":"short","productRef":"mug-1","row":1,"field":"description","detail":"The description is shorter than 40 characters. It was not expanded."}],"corrections":[{"productRef":"mug-1","row":1,"field":"category","code":"separators","detail":"Category separators were standardized. The category words were not changed.","replacement":"Home > Kitchen"},{"productRef":"mug-1","row":1,"field":"description","code":"html","detail":"Remove the HTML tags. No new sentence was added.","replacement":"A sturdy mug."},{"productRef":"mug-2","row":2,"field":"description","code":"missing","detail":"Add a description supplied by the seller.","replacement":""},{"productRef":"mug-2","row":2,"field":"imageUrl","code":"missing","detail":"Add the seller's image URL.","replacement":""}],"limitations":["No sales channel was contacted and no product was published.","Specifications, dimensions, materials, and certifications are not invented.","A category is marked inferred only when one caller-supplied keyword matches the title. It is not written over a supplied category.","Feed checks cover brainiac-catalog-v1 and a documented Google Merchant subset. They are not a channel approval.","Image files are not downloaded. Only supplied URLs and metadata are checked."]}}}},"400":{"description":"Invalid JSON or request schema."},"402":{"description":"Payment Required"},"409":{"description":"Idempotency conflict, in-progress payment, or expired result cache. Reusing the key cannot trigger a second charge."},"413":{"description":"Request body exceeds the 24 MB limit."},"500":{"description":"Operation failed. With upfront settlement this may occur after payment; reuse the same idempotency key to retrieve the stored result."},"503":{"description":"Payment or retry-safe result storage is unavailable; the operation is not run."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.12"},"protocols":[{"x402":{}}]}}}},"components":{"schemas":{"ApiError":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}}}}}