{"openapi":"3.1.0","info":{"title":"Tight Steel API","version":"1.0","description":"Machine-readable access to Tight Steel pooled steel-tube procurement data. Schedules and quantities are indicative. Current availability is confirmed with each inquiry. Expressing interest is non-binding; all commitments happen with a human via firm PO.","contact":{"name":"Tight Steel","url":"https://tightsteel.com"}},"servers":[{"url":"https://tightsteel.com"}],"paths":{"/api/pools":{"get":{"operationId":"listPools","summary":"List all procurement pools","description":"Returns every pool shown on https://tightsteel.com/warehouse, from the same data source, so the API and the site never differ. Also available at /pools.json. Schedules and quantities are indicative. Current availability is confirmed with each inquiry. Statuses \"open\" and \"forming\" accept availability inquiries; \"mill_review\" and \"scheduled\" are past cutoff and shown for completeness. Fields with no confirmed real value are omitted — absence means unknown, never zero. No pricing is exposed: pricing is confirmed per inquiry. Responses are cacheable for 1 hour and CORS-enabled for GET from any origin.","responses":{"200":{"description":"Pool list","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"public, max-age=3600"},"Access-Control-Allow-Origin":{"schema":{"type":"string"},"description":"*"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PoolsResponse"}}}}}}},"/api/requirements":{"post":{"operationId":"submitRequirement","summary":"Submit a buyer requirement","description":"Submits a steel-tube requirement into the same human-reviewed pipeline as the /post-a-requirement form. Non-binding: A human validates specification compatibility, availability, pricing and timing before anything is confirmed. Accepted standards: ASTM A513. Rate limited per IP (shared with the human form); maximum payload 16 KB.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequirementIntake"}}}},"responses":{"202":{"description":"Requirement received for human validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequirementReceived"}}}},"400":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"413":{"description":"Payload too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"500":{"description":"Persistence failure — nothing was recorded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"503":{"description":"Lead storage not configured — nothing was saved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}}},"components":{"schemas":{"PoolsResponse":{"type":"object","properties":{"schema_version":{"type":"string"},"generated_at":{"type":"string"},"disclaimer":{"type":"string"},"pools":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"standard":{"type":"string"},"type":{"type":"string"},"shape":{"type":"string","enum":["Round","Square","Rectangular"]},"od_in":{"type":"number","exclusiveMinimum":0},"wall_in":{"type":"number","exclusiveMinimum":0},"length_ft":{"type":"number","exclusiveMinimum":0},"region":{"type":"string"},"status":{"type":"string","enum":["open","forming","mill_review","scheduled"]},"order_cutoff":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"est_production_window":{"type":"string"},"last_confirmed":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"committed_ft":{"type":"integer","minimum":0,"maximum":9007199254740991},"target_ft":{"type":"integer","minimum":0,"maximum":9007199254740991},"indicative_available_ft":{"type":"integer","minimum":0,"maximum":9007199254740991},"committed_tons":{"type":"number","minimum":0},"target_tons":{"type":"number","minimum":0},"url":{"type":"string"},"check_availability_url":{"type":"string"}},"required":["id","standard","shape","region","status","committed_ft","target_ft","indicative_available_ft","committed_tons","target_tons","url","check_availability_url"]}}},"required":["schema_version","generated_at","disclaimer","pools"]},"RequirementIntake":{"type":"object","properties":{"standard":{"type":"string","minLength":1},"type_or_grade":{"type":"string","minLength":1,"maxLength":120},"shape":{"type":"string","enum":["Round","Square","Rectangular"]},"od_in":{"type":"number","exclusiveMinimum":0,"maximum":30},"wall_in":{"type":"number","exclusiveMinimum":0,"maximum":3},"length_ft":{"type":"number","exclusiveMinimum":0,"maximum":100},"quantity_ft":{"type":"integer","exclusiveMinimum":0,"maximum":10000000},"delivery_region":{"type":"string","enum":["Ontario, Canada","Southeast US"]},"needed_by":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"recurring":{"type":"boolean"},"company":{"type":"string","minLength":2,"maxLength":160},"contact_name":{"type":"string","minLength":1,"maxLength":120},"email":{"type":"string","maxLength":200,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":40},"notes":{"type":"string","maxLength":2000},"source":{"type":"string","maxLength":200},"website":{"anyOf":[{"type":"string","maxLength":0},{"type":"string","const":""}]}},"required":["standard","type_or_grade","shape","od_in","wall_in","length_ft","quantity_ft","delivery_region","company","contact_name","email"]},"RequirementReceived":{"type":"object","required":["status","message"],"properties":{"status":{"type":"string","const":"received"},"submission_id":{"type":"string","description":"Human-readable submission reference, e.g. TS-M4X2-9QKD."},"message":{"type":"string","const":"A human validates specification compatibility, availability, pricing and timing before anything is confirmed."}}},"ApiError":{"type":"object","required":["status","error"],"properties":{"status":{"type":"string","const":"error"},"error":{"type":"string"},"field_errors":{"type":"object","additionalProperties":{"type":"string"}}}}}}}