{"openapi":"3.1.0","info":{"title":"MERA Robotics Public API","version":"1.0.0","description":"Discover the MERA offer and market catalogue, prepare a brief, then submit a human-authorized inquiry. Does not book robots, promise availability or issue prices.","contact":{"name":"MERA Robotics","email":"contact@merarobotics.com"}},"servers":[{"url":"https://merarobotics.com"}],"security":[],"paths":{"/api/public/v1/cases":{"get":{"operationId":"readMeraProjects","summary":"Documented projects with original footage, source dates and labelled self-reported results","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["pl","en"]}}],"responses":{"200":{"description":"Case studies with evidence provenance and scope limitations","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/v1/provider":{"get":{"operationId":"evaluateMeraServiceFit","summary":"MERA service fit, deliverables, confirmation requirements and evidence provenance","parameters":[{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["pl","en"],"default":"en"}}],"responses":{"200":{"description":"Company identity, service decision criteria, first-party offer links and external coverage with scope","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/v1/services":{"get":{"operationId":"listMeraServices","summary":"Official MERA services and brief fields","responses":{"200":{"description":"Services, contact and confirmation requirements","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/v1/catalog":{"get":{"operationId":"searchHumanoids","summary":"Search the market catalogue, not live stock","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":120},"description":"Model or use case"},{"name":"manufacturer","in":"query","required":false,"schema":{"type":"string"},"description":"Exact manufacturer, case insensitive"},{"name":"status","in":"query","required":false,"schema":{"type":"string"},"description":"Editorial catalogue status; not current stock"},{"name":"rental","in":"query","required":false,"schema":{"type":"boolean"},"description":"true: only models in MERA rental offer"},{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["pl","en"]}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":30}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}}],"responses":{"200":{"description":"items, total and next_offset; source verification status per model","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/v1/catalog/{id}":{"get":{"operationId":"getHumanoid","summary":"Model, original source and MERA offer relationship","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","enum":["pl","en"]}}],"responses":{"200":{"description":"Catalogue model","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown model","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/v1/press":{"get":{"operationId":"listPressCoverage","summary":"Original publications about Edward and MERA","responses":{"200":{"description":"Original links; coverage is not endorsement or permission to reuse","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/v1/recommend":{"post":{"operationId":"prepareRobotBrief","summary":"Match a brief to curated services; no personal data needed","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Brief"}}}},"responses":{"200":{"description":"Candidates, rationale, missing fields and constraints; quote=null and booking_confirmed=false","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid JSON or idempotency key","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"Body exceeds 16 KB","content":{"application/json":{"schema":{"type":"object"}}}},"415":{"description":"Use application/json","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Invalid request; fields contain corrections","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit; retry later","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Temporary failure; retain the same idempotency key and retry","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/public/v1/inquiries":{"post":{"operationId":"submitHumanApprovedInquiry","summary":"Write a human-approved inquiry to MERA CRM","description":"Only call after the person explicitly approves sharing contact details with MERA. Use one random idempotency key per inquiry and retain it on retries. The same normalized payload and key produce one CRM record. Changing either creates a new inquiry. A copy is queued via FormSubmit to the MERA team. The notification status describes provider acceptance, not confirmed inbox delivery. No booking is made. If notification.browser_delivery is returned, the server could not send via FormSubmit: send its payload once to its fixed FormSubmit URL, then POST action=email_receipt with reference, token and the observed status to this same endpoint. Do not automatically resend after an uncertain result. If your client cannot perform this step, report that the inquiry is saved but its notification needs operator attention.","x-openai-isConsequential":true,"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{16,100}$"},"description":"Random UUID recommended; keep unchanged on retry"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/Inquiry"},{"type":"object","required":["action","reference","token","status"],"properties":{"action":{"const":"email_receipt"},"reference":{"type":"string","description":"Reference from the inquiry response"},"token":{"type":"string","description":"Single-use browser delivery claim from the same inquiry response"},"status":{"type":"string","enum":["accepted","activation_required","needs_review"]}}}]}}}},"responses":{"200":{"description":"Browser delivery receipt acknowledged","content":{"application/json":{"schema":{"type":"object"}}}},"201":{"description":"Inquiry durably received; safe to retry","content":{"application/json":{"schema":{"type":"object","required":["status","reference","booking_confirmed"],"properties":{"status":{"const":"received"},"reference":{"type":"string"},"booking_confirmed":{"const":false},"quote":{"type":"null"},"notification":{"type":"object","description":"Delivery status and optional single-use browser_delivery claim (url, payload, reference, token). Contains only data from this inquiry; keep it private."},"message":{"type":"string"}}}}}},"400":{"description":"Invalid JSON or idempotency key","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"Invalid delivery receipt","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"Body exceeds 16 KB","content":{"application/json":{"schema":{"type":"object"}}}},"415":{"description":"Use application/json","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"Invalid request; fields contain corrections","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Rate limit; retry later","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Temporary failure; retain the same idempotency key and retry","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"Brief":{"type":"object","required":["service"],"properties":{"service":{"type":"string","description":"Requested service","enum":["events","purchase","integration","mera-os","campaign","media"]},"lang":{"type":"string","description":"Response language","enum":["pl","en"],"default":"pl"},"robot_id":{"type":"string","description":"Optional ID from the catalogue; does not imply stock or support","maxLength":80},"date":{"type":"string","description":"Preferred date, not a reservation","format":"date"},"city":{"type":"string","description":"Event or deployment location","maxLength":160},"audience":{"type":"string","description":"Approximate audience","maxLength":80},"duration":{"type":"string","description":"Requested on-site duration","maxLength":80},"languages":{"type":"array","maxItems":8,"items":{"type":"string","description":"Language","maxLength":50}},"budget":{"type":"string","description":"Optional budget, not a quotation","maxLength":100},"message":{"type":"string","description":"Goal and requirements","maxLength":4000}}},"Inquiry":{"allOf":[{"$ref":"#/components/schemas/Brief"},{"type":"object","required":["contact","contact_permission","actor"],"properties":{"contact":{"type":"object","required":["name","email"],"properties":{"name":{"type":"string","description":"Contact person","maxLength":120},"email":{"type":"string","description":"Reply address","format":"email","maxLength":200},"phone":{"type":"string","description":"Optional phone","maxLength":60},"company":{"type":"string","description":"Organization","maxLength":200}}},"actor":{"type":"string","description":"Who submits","enum":["human","agent"]},"contact_permission":{"const":true,"description":"Permission to share details with MERA for this inquiry, not marketing consent"},"human_confirmed":{"type":"boolean","description":"Must be true for actor=agent after human approval"},"attribution":{"type":"object","properties":{"page":{"type":"string"},"referrer":{"type":"string"},"utm_source":{"type":"string"},"utm_medium":{"type":"string"},"utm_campaign":{"type":"string"}}}},"if":{"properties":{"actor":{"const":"agent"}},"required":["actor"]},"then":{"required":["human_confirmed"],"properties":{"human_confirmed":{"const":true}}}}]}}}}