{"openapi":"3.1.0","info":{"title":"Acorn Harness API","version":"1.0.0","description":"Price, spec, and order custom XT30 and XT30(2+2) jumper harnesses. No API key: create an order, then the payer opens checkout_url to pay with Stripe (card, Link, Apple Pay, etc.) and enter the US shipping address. Poll the order for status. Full reference: https://acornharness.com/llms-full.txt","contact":{"email":"hello@almond.bot"}},"servers":[{"url":"https://acornharness.com"}],"paths":{"/api/orders":{"post":{"operationId":"createOrder","summary":"Create an order and get a Stripe checkout link","description":"Prices every design server-side (volume discount across all items) and opens a Stripe Checkout Session valid for 24 hours. Nothing is charged or built until someone pays at checkout_url. Send an Idempotency-Key header to make retries safe.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Any unique string; retrying with the same key and body returns the same order.","schema":{"type":"string","maxLength":255}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderRequest"}}}},"responses":{"201":{"description":"Order created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Order"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Idempotency-Key reused with a different body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Online ordering is not configured","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/orders/{id}":{"get":{"operationId":"getOrder","summary":"Get an order's payment status and totals","parameters":[{"name":"id","in":"path","required":true,"description":"Order id from createOrder (cs_…)","schema":{"type":"string"}}],"responses":{"200":{"description":"The order","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderStatus"}}}},"404":{"description":"No such order","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/quote":{"get":{"operationId":"quoteDesign","summary":"Instant quote for one design from query parameters","description":"Any omitted parameter takes the default design's value.","parameters":[{"name":"k","in":"query","required":false,"description":"Connector code: 22 = XT30(2+2), 2 = XT30","schema":{"type":"string"}},{"name":"l","in":"query","required":false,"description":"Wire length in mm","schema":{"type":"string"}},{"name":"g","in":"query","required":false,"description":"Power gauge (AWG)","schema":{"type":"string"}},{"name":"a","in":"query","required":false,"description":"End A termination: st, ra-u, ra-d","schema":{"type":"string"}},{"name":"b","in":"query","required":false,"description":"End B termination: st, ra-u, ra-d, or un (unterminated: tinned leads)","schema":{"type":"string"}},{"name":"c","in":"query","required":false,"description":"Wire colors in pin order, joined with '.'","schema":{"type":"string"}},{"name":"t","in":"query","required":false,"description":"XT30(2+2) only: 1 = twisted signal pair, 0 = parallel","schema":{"type":"string"}},{"name":"q","in":"query","required":false,"description":"Quantity","schema":{"type":"string"}},{"name":"order_qty","in":"query","required":false,"description":"Price at the volume tier of a larger order","schema":{"type":"integer"}}],"responses":{"200":{"description":"Quote","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"quoteOrder","summary":"Quote a multi-design order without creating it","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["items"],"properties":{"items":{"$ref":"#/components/schemas/Items"}}}}}},"responses":{"200":{"description":"Pricing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderPricing"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/spec":{"get":{"operationId":"getSpec","summary":"Manufacturing spec (Almond Harness Studio .harness.json) for a design","parameters":[{"name":"k","in":"query","required":false,"description":"Connector code: 22 = XT30(2+2), 2 = XT30","schema":{"type":"string"}},{"name":"l","in":"query","required":false,"description":"Wire length in mm","schema":{"type":"string"}},{"name":"g","in":"query","required":false,"description":"Power gauge (AWG)","schema":{"type":"string"}},{"name":"a","in":"query","required":false,"description":"End A termination: st, ra-u, ra-d","schema":{"type":"string"}},{"name":"b","in":"query","required":false,"description":"End B termination: st, ra-u, ra-d, or un (unterminated: tinned leads)","schema":{"type":"string"}},{"name":"c","in":"query","required":false,"description":"Wire colors in pin order, joined with '.'","schema":{"type":"string"}},{"name":"t","in":"query","required":false,"description":"XT30(2+2) only: 1 = twisted signal pair, 0 = parallel","schema":{"type":"string"}},{"name":"q","in":"query","required":false,"description":"Quantity","schema":{"type":"string"}}],"responses":{"200":{"description":"Harness Studio file","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Item":{"type":"object","additionalProperties":false,"description":"One harness design. Omitted fields take the default (XT30(2+2), 350 mm, 16 AWG, straight / right-angle-down, red/black/green/yellow, twisted, qty 1). Set end_b to \"unterminated\" for a pigtail.","properties":{"design":{"type":"string","description":"Optional starting point: a complete design code (k=22&l=350&…) or design_url, as returned by /api/quote. Named fields override it."},"connector":{"enum":["xt30","xt30-22"],"description":"xt30-22 = XT30(2+2), power + 2 signal pins; xt30 = power only"},"length_mm":{"type":"number","minimum":30,"maximum":3000,"description":"Wire length between the backs of the plugs (on a pigtail, back of the plug to the wire tips); rounded to 5 mm"},"power_gauge":{"enum":[14,16,18],"description":"Power wire AWG"},"end_a":{"enum":["straight","ra-up","ra-down"]},"end_b":{"enum":["straight","ra-up","ra-down","unterminated"],"description":"\"unterminated\": no plug on end B; every wire stripped 6 mm and tinned"},"colors":{"type":"array","description":"Pin order. xt30: [PIN+, PIN-] from red/black. xt30-22 adds [SIG1, SIG2] from green/yellow.","items":{"type":"string"},"minItems":2,"maxItems":4},"twisted":{"type":"boolean","description":"xt30-22 only: twist the signal pair"},"quantity":{"type":"integer","minimum":1,"maximum":5000}}},"Items":{"type":"array","minItems":1,"maxItems":40,"items":{"oneOf":[{"$ref":"#/components/schemas/Item"},{"type":"string","description":"A design code or design_url"}]}},"OrderRequest":{"type":"object","required":["items"],"properties":{"items":{"$ref":"#/components/schemas/Items"},"email":{"type":"string","format":"email","description":"Prefills the payer's email; receipts and tracking go here"},"reference":{"type":"string","maxLength":200,"description":"Your PO number or note, echoed back on the order"}}},"OrderPricing":{"type":"object","properties":{"currency":{"const":"USD"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"design":{"type":"string"},"design_url":{"type":"string"},"spec_url":{"type":"string"},"quantity":{"type":"integer"},"list_unit_price":{"type":"number","description":"USD"},"unit_price":{"type":"number","description":"USD"},"total":{"type":"number","description":"USD"}}}},"harnesses":{"type":"integer","description":"Total harnesses across items; sets the volume tier"},"volume_discount":{"type":"number","description":"Fraction off, e.g. 0.05"},"next_volume_break":{"type":["object","null"],"properties":{"harnesses":{"type":"integer"},"discount":{"type":"number"}}},"subtotal":{"type":"number","description":"USD"},"shipping_options":{"type":"array","description":"Chosen by the payer at checkout","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"price":{"type":"number","description":"USD"},"transit_business_days":{"type":["object","null"],"properties":{"min":{"type":"integer"},"max":{"type":"integer"}}}}}},"excludes":{"type":"string"},"lead_time_business_days":{"type":"integer"},"ships_to":{"type":"string"}}},"Order":{"allOf":[{"$ref":"#/components/schemas/OrderPricing"},{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"order"},"status":{"const":"awaiting_payment"},"checkout_url":{"type":"string","description":"Stripe Checkout page; give this to whoever pays"},"expires_at":{"type":"string","format":"date-time"},"status_url":{"type":"string"},"reference":{"type":["string","null"]}}}]},"OrderStatus":{"type":"object","properties":{"id":{"type":"string"},"object":{"const":"order"},"status":{"enum":["awaiting_payment","payment_processing","payment_failed","paid","expired"]},"created":{"type":"string","format":"date-time"},"checkout_url":{"type":"string","description":"Only while awaiting_payment"},"expires_at":{"type":"string","format":"date-time","description":"Only while awaiting_payment"},"reference":{"type":["string","null"]},"currency":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"design":{"type":["string","null"]},"design_url":{"type":["string","null"]},"quantity":{"type":"integer"},"unit_price":{"type":"number","description":"USD"},"total":{"type":"number","description":"USD"}}}},"harnesses":{"type":"integer"},"subtotal":{"type":"number","description":"USD"},"discount":{"type":"number","description":"Promotion codes applied at checkout"},"shipping":{"type":["object","null"],"properties":{"label":{"type":["string","null"]},"price":{"type":"number","description":"USD"}}},"tax":{"type":"number","description":"USD"},"total":{"type":"number","description":"USD"},"fulfillment":{"type":["string","null"]}}},"Error":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}