{"openapi":"3.1.0","info":{"title":"Attraction Product API","description":"Public product catalog and product detail API for Attraction.","version":"v1"},"servers":[{"url":"https://api.attraction.com","description":"Production public API"}],"paths":{"/v1/health":{"get":{"operationId":"getV1Health","summary":"Health check","responses":{"200":{"description":"Service health status."}}}},"/v1/products":{"get":{"operationId":"getV1Products","summary":"List public products","description":"Returns public product summaries, clean API-provided categories with display order, and localized brand labels for the requested locale. Standard products include local images and inventory by color; Jameo and made-to-order products can use colorBlocks customization.","tags":["Products"],"parameters":[{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["en-CA","en-US","fr-CA"],"example":"en-CA"},"description":"Response locale. Defaults to en-CA."}],"responses":{"200":{"description":"Public product catalog.","content":{"application/json":{"schema":{"type":"object","required":["locale","products","categories","brands"],"properties":{"locale":{"type":"string","example":"en-CA"},"products":{"type":"array","items":{"type":"object","required":["sku","slug","productName","descriptions","brand","customization","catalog","minimumOrder","studio","pricing","images","colors"],"properties":{"sku":{"type":"string","example":"100386U"},"slug":{"type":"string","example":"100386u"},"productName":{"type":"string","example":"Crewneck t-shirt"},"descriptions":{"type":"object","description":"Localized public product copy.","properties":{"tagline":{"type":"string"},"short":{"type":"string"},"long":{"type":"string"}}},"brand":{"type":"string","example":"Ethica"},"customization":{"type":"object","required":["colorBlocks"],"properties":{"colorBlocks":{"type":"boolean","description":"True for products displayed with the custom color-block wheel.","example":false},"colorBlocksTagline":{"type":"string","description":"Optional public tagline for color-block products.","example":"Over 300 combinations"}}},"catalog":{"type":"object","required":["inspiration","category","for"],"properties":{"inspiration":{"type":"array","items":{"type":"string"},"example":["Promotional"]},"category":{"type":"string","example":"T-shirts"},"for":{"type":"string","example":"Unisex"}}},"minimumOrder":{"type":"object","required":["quantity","description"],"properties":{"quantity":{"type":"number","example":36},"description":{"type":"string","example":"Minimum 36 decorated units. No minimum undecorated."}}},"studio":{"type":"object","required":["available"],"properties":{"available":{"type":"boolean","description":"Whether the public website can link to Studio for this product.","example":true}}},"pricing":{"type":"object","required":["currency","msrp"],"properties":{"currency":{"type":"string","example":"CAD"},"msrp":{"type":"array","items":{"type":"object","required":["minQuantity","maxQuantity","regularPrice","price"],"properties":{"minQuantity":{"type":"number","example":36},"maxQuantity":{"type":["number","null"],"example":99},"regularPrice":{"type":"number","example":28},"price":{"type":"number","description":"Public price for this quantity bracket. Net prices are not part of the public API documentation.","example":28}}}},"designCredits":{"type":"object","required":["included","description"],"properties":{"included":{"type":"number","example":8},"description":{"type":"string"}}}}},"images":{"type":"array","items":{"type":"object","required":["url","alt"],"properties":{"url":{"type":"string","format":"uri","example":"https://www.attraction.com/assets/products/100386u/100386u-primary.webp"},"alt":{"type":"string","example":"Crewneck t-shirt"}}}},"colors":{"type":"array","items":{"type":"object","required":["id","name","swatches","colorFamilies","images"],"properties":{"id":{"type":"string","example":"0001"},"pms":{"type":"string","example":"White"},"name":{"type":"string","example":"White"},"weight":{"type":"string","example":"7.4 oz/linear yd (150 gsm)"},"swatches":{"type":"array","items":{"type":"string"},"example":["#FFFFFF"]},"colorFamilies":{"type":"array","items":{"type":"string"}},"images":{"type":"array","items":{"type":"string","format":"uri"}}}}}}}},"categories":{"type":"array","description":"Clean product categories and their display/sort order from the API.","items":{"type":"object","required":["name","order"],"properties":{"name":{"type":"string","example":"T-shirts"},"order":{"type":"number","example":10}}}},"brands":{"type":"object","additionalProperties":{"type":"object","required":["name","description"],"properties":{"name":{"type":"string","example":"Ethica"},"url":{"type":"string","description":"Public brand URL. Empty when no brand page is published.","example":"https://www.attraction.com/en-ca/products/ethica"},"description":{"type":"string"}}}}}},"example":{"locale":"en-CA","products":[{"sku":"100386U","slug":"100386u","productName":"Crewneck t-shirt","descriptions":{"tagline":"Crewneck t-shirt, our best-selling t-shirt. Ethica made in Canada.","short":"Crewneck t-shirt in jersey in organic cotton and recycled polyester."},"brand":"Ethica","customization":{"colorBlocks":false},"catalog":{"inspiration":["Promotional"],"category":"T-shirts","for":"Unisex"},"minimumOrder":{"quantity":36,"description":"Minimum 36 decorated units. No minimum undecorated."},"studio":{"available":true},"pricing":{"currency":"CAD","msrp":[{"minQuantity":36,"maxQuantity":99,"regularPrice":28,"price":28}]},"images":[{"url":"https://www.attraction.com/assets/products/100386u/100386u-primary.webp","alt":"Crewneck t-shirt"}],"colors":[{"id":"0001","name":"White","swatches":["#FFFFFF"],"colorFamilies":[],"images":["https://www.attraction.com/assets/products/100386u/100386u-white.webp"]}]}],"categories":[{"name":"T-shirts","order":10},{"name":"Long sleeves","order":20}],"brands":{"Ethica":{"name":"Ethica","url":"https://www.attraction.com/en-ca/products/ethica","description":"Timeless classics, made in Canada with sustainable fibres."}}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/v1/products/{sku}":{"get":{"operationId":"getV1ProductsBySku","summary":"Get public product detail","description":"Returns one localized public product detail payload. Examples document a standard Ethica product (100386U), a Jameo color-block product (01U-TS), and a made-to-order Ethica product (100155U).","tags":["Products"],"parameters":[{"name":"sku","in":"path","required":true,"schema":{"type":"string","example":"100386U"},"description":"Product SKU, such as 100386U, 01U-TS, or 100155U."},{"name":"locale","in":"query","required":false,"schema":{"type":"string","enum":["en-CA","en-US","fr-CA"],"example":"en-CA"},"description":"Response locale. Defaults to en-CA."}],"responses":{"200":{"description":"Public product detail.","content":{"application/json":{"schema":{"type":"object","required":["sku","slug","locale","productName","descriptions","brand","catalog","minimumOrder","customization","studio","pricing","images","assets","colors","inventory"],"properties":{"sku":{"type":"string","example":"100386U"},"slug":{"type":"string","example":"100386u"},"locale":{"type":"string","example":"en-CA"},"productName":{"type":"string","example":"Crewneck t-shirt"},"descriptions":{"type":"object","description":"Localized public product copy.","properties":{"tagline":{"type":"string"},"short":{"type":"string"},"long":{"type":"string"}}},"keywords":{"type":"array","items":{"type":"string"}},"note":{"type":"string","description":"Optional customer-facing product note."},"brand":{"type":"object","required":["name","description"],"properties":{"name":{"type":"string","example":"Ethica"},"url":{"type":"string","description":"Public brand URL. Empty when no brand page is published.","example":"https://www.attraction.com/en-ca/products/ethica"},"description":{"type":"string"}}},"insufficientInventoryMessage":{"type":"string"},"catalog":{"type":"object","required":["inspiration","category","for"],"properties":{"inspiration":{"type":"array","items":{"type":"string"},"example":["Promotional"]},"category":{"type":"string","example":"T-shirts"},"for":{"type":"string","example":"Unisex"}}},"links":{"type":"object","properties":{"product":{"type":"string","format":"uri"},"brand":{"type":"string","format":"uri"},"category":{"type":"string","format":"uri"},"studio":{"type":"string","format":"uri","example":"https://studio.jameo.com/home?lang=en"}}},"tag":{"type":"string","description":"Optional merchandising tag, such as Best seller."},"minimumOrder":{"type":"object","required":["quantity","description"],"properties":{"quantity":{"type":"number","example":36},"description":{"type":"string","example":"Minimum 36 decorated units. No minimum undecorated."}}},"customization":{"type":"object","required":["colorBlocks","decorations","options"],"properties":{"colorBlocks":{"type":"boolean","description":"True for products displayed with the custom color-block wheel.","example":false},"colorBlocksTagline":{"type":"string","description":"Optional public tagline for color-block products.","example":"Over 300 combinations"},"decorations":{"type":"array","items":{"type":"object","additionalProperties":true}},"options":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"studio":{"type":"object","required":["available"],"properties":{"available":{"type":"boolean","description":"Whether the public website can link to Studio for this product.","example":true}}},"pricing":{"type":"object","required":["currency","msrp"],"properties":{"currency":{"type":"string","example":"CAD"},"msrp":{"type":"array","items":{"type":"object","required":["minQuantity","maxQuantity","regularPrice","price"],"properties":{"minQuantity":{"type":"number","example":36},"maxQuantity":{"type":["number","null"],"example":99},"regularPrice":{"type":"number","example":28},"price":{"type":"number","description":"Public price for this quantity bracket. Net prices are not part of the public API documentation.","example":28}}}},"designCredits":{"type":"object","required":["included","description"],"properties":{"included":{"type":"number","example":8},"description":{"type":"string"}}}}},"images":{"type":"array","items":{"type":"object","required":["url","alt"],"properties":{"url":{"type":"string","format":"uri","example":"https://www.attraction.com/assets/products/100386u/100386u-primary.webp"},"alt":{"type":"string","example":"Crewneck t-shirt"}}}},"assets":{"type":"object","required":["images","resources"],"properties":{"images":{"type":"array","items":{"type":"object","required":["url","alt"],"properties":{"url":{"type":"string","format":"uri","example":"https://www.attraction.com/assets/products/100386u/100386u-primary.webp"},"alt":{"type":"string","example":"Crewneck t-shirt"}}}},"resources":{"type":"array","items":{"type":"object","required":["type","label","url"],"properties":{"type":{"type":"string","example":"sizeChart"},"label":{"type":"string","example":"Size chart"},"url":{"type":"string","format":"uri"}}}}}},"colors":{"type":"array","items":{"type":"object","required":["id","name","swatches","colorFamilies","images"],"properties":{"id":{"type":"string","example":"0001"},"pms":{"type":"string","example":"White"},"name":{"type":"string","example":"White"},"weight":{"type":"string","example":"7.4 oz/linear yd (150 gsm)"},"swatches":{"type":"array","items":{"type":"string"},"example":["#FFFFFF"]},"colorFamilies":{"type":"array","items":{"type":"string"}},"images":{"type":"array","items":{"type":"string","format":"uri"}}}}},"inventory":{"type":"array","items":{"type":"object","required":["colorId","size","quantity"],"properties":{"colorId":{"type":"string","example":"0001"},"size":{"type":"string","example":"M"},"quantity":{"type":"number","example":1916}}}}}},"examples":{"standardEthica":{"summary":"Standard product: 100386U","value":{"sku":"100386U","slug":"100386u","locale":"en-CA","productName":"Crewneck t-shirt","descriptions":{"tagline":"Crewneck t-shirt, our best-selling t-shirt. Ethica made in Canada.","short":"Crewneck t-shirt in jersey in organic cotton and recycled polyester, or 100% organic cotton depending on the colour, our best-selling t-shirt, wide colour range. Ethica made in Canada."},"brand":{"name":"Ethica","url":"https://www.attraction.com/en-ca/products/ethica","description":"Timeless classics, made in Canada with sustainable fibres."},"catalog":{"inspiration":["Promotional"],"category":"T-shirts","for":"Unisex"},"tag":"Best seller","minimumOrder":{"quantity":36,"description":"Minimum 36 decorated units. No minimum undecorated."},"customization":{"colorBlocks":false,"decorations":[],"options":[]},"studio":{"available":true},"pricing":{"currency":"CAD","msrp":[{"minQuantity":36,"maxQuantity":99,"regularPrice":28,"price":28},{"minQuantity":100,"maxQuantity":299,"regularPrice":26,"price":26}]},"images":[{"url":"https://www.attraction.com/assets/products/100386u/100386u-primary.webp","alt":"Crewneck t-shirt"}],"assets":{"images":[{"url":"https://www.attraction.com/assets/products/100386u/100386u-primary.webp","alt":"Crewneck t-shirt"}],"resources":[{"type":"sizeChart","label":"Size chart","url":"https://attraction.com/assets/products/100386u/100386u.pdf"}]},"colors":[{"id":"0001","pms":"White","name":"White","weight":"7.4 oz/linear yd (150 gsm)","swatches":["#FFFFFF"],"colorFamilies":[],"images":["https://www.attraction.com/assets/products/100386u/100386u-white.webp"]}],"inventory":[{"colorId":"0001","size":"M","quantity":1916}]}},"jameoColorBlocks":{"summary":"Jameo color-block product: 01U-TS","value":{"sku":"01U-TS","slug":"01u-ts","locale":"en-CA","productName":"T-Shirt","descriptions":{"tagline":"A comfortable unisex round-neck tee.","short":"A flattering unisex fit with a classic round neck, designed for everyday comfort and effortless style."},"brand":{"name":"Jameo","url":"https://www.attraction.com/en-ca/products/jameo","description":"Hyper custom apparel made to stand out."},"catalog":{"inspiration":["Promotional"],"category":"T-shirts","for":"Unisex"},"minimumOrder":{"quantity":20,"description":"Minimum of 20 units per design."},"customization":{"colorBlocks":true,"colorBlocksTagline":"Color blocks & trims","decorations":[],"options":[]},"studio":{"available":true},"pricing":{"currency":"CAD","msrp":[{"minQuantity":20,"maxQuantity":29,"regularPrice":35,"price":35},{"minQuantity":30,"maxQuantity":49,"regularPrice":33,"price":33}],"designCredits":{"included":8,"description":"This product comes with 8 free design credits, providing a solid base for colour changes and decorations so you don't have to pay for every little change."}},"images":[{"url":"https://www.attraction.com/assets/products/01u-ts/01u-ts-primary.webp","alt":"T-Shirt"}],"assets":{"images":[{"url":"https://www.attraction.com/assets/products/01u-ts/01u-ts-primary.webp","alt":"T-Shirt"}],"resources":[{"type":"sizeChart","label":"Size chart","url":"https://www.jameo.com/sizes"}]},"colors":[{"id":"005","name":"Black","swatches":["#000000"],"colorFamilies":[],"images":[]}],"inventory":[{"colorId":"005","size":"M","quantity":9999}]}},"madeToOrder":{"summary":"Made-to-order product: 100155U","value":{"sku":"100155U","slug":"100155u","locale":"en-CA","productName":"Raglan long sleeve t-shirt","descriptions":{"tagline":"Made-to-order raglan long sleeve t-shirt, over 300 possible combinations. Ethica made-to-order, made in Canada.","short":"Made-to-order raglan long sleeve t-shirt in organic cotton and recycled polyester, over 300 possible combinations, minimum order of 100 units. Ethica made-to-order, made in Canada."},"note":"For women, order a smaller size than usual (M=S), since this is a unisex style.","brand":{"name":"Ethica","url":"https://www.attraction.com/en-ca/products/ethica","description":"Timeless classics, made in Canada with sustainable fibres."},"catalog":{"inspiration":["Promotional"],"category":"Long sleeves","for":"Unisex"},"minimumOrder":{"quantity":100,"description":"Minimum of 100 units (for 5 sizes or fewer) or 300 units (for more than 5 sizes)."},"customization":{"colorBlocks":true,"colorBlocksTagline":"Over 300 combinations","decorations":[],"options":[]},"studio":{"available":false},"pricing":{"currency":"CAD","msrp":[{"minQuantity":100,"maxQuantity":299,"regularPrice":43,"price":43},{"minQuantity":300,"maxQuantity":499,"regularPrice":39,"price":39}]},"images":[{"url":"https://www.attraction.com/assets/products/100155u/100155u-primary.webp","alt":"Raglan long sleeve t-shirt"}],"assets":{"images":[],"resources":[]},"colors":[{"id":"0909","name":"Made-To-Order","swatches":[],"colorFamilies":[],"images":[]}],"inventory":[{"colorId":"0909","size":"M","quantity":9999}]}}}}}},"400":{"description":"Invalid product detail request.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"404":{"description":"Product not found.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}},"/v1/sync/activeProduct":{"get":{"operationId":"getV1SyncActiveProduct","summary":"List active products","description":"Returns active products from specs-service, optionally filtered by company alias.","tags":["Sync Prextra"],"parameters":[{"name":"company","in":"query","required":false,"description":"Company alias to filter by: ethica, initial, or jameo.","schema":{"type":"string"}},{"name":"locale","in":"query","required":false,"description":"Catalog locale used for localized product content.","schema":{"type":"string","example":"en-CA"}}],"responses":{"200":{"description":"Active product list.","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Invalid active products request.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}},"502":{"description":"Specs-service active products unavailable.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}}},"components":{}}