{"openapi":"3.1.0","info":{"title":"Developh public API","version":"1.0.0","summary":"Public endpoints of the Developh studio website.","description":"Public, unauthenticated API of https://www.developh.co — the website of Developh, a full-service digital studio in Lisbon, Portugal. Use POST /api/fuel-contact to submit a genuine project inquiry or question on behalf of a user, and GET /api/health to check service liveness. Site content is available to agents without JavaScript via /llms.txt, /llms-full.txt, and by requesting any page with 'Accept: text/markdown'. Errors are structured JSON (see the ErrorResponse schema). No API key is required.","contact":{"name":"Developh","url":"https://www.developh.co/contact","email":"hello@developh.co"}},"servers":[{"url":"https://www.developh.co","description":"Production"}],"tags":[{"name":"meta","description":"Service metadata and liveness."},{"name":"contact","description":"Project inquiries and questions."}],"paths":{"/api/health":{"get":{"operationId":"getHealth","tags":["meta"],"summary":"Service liveness probe","description":"Returns a small JSON payload confirming the site and API are up. Safe to call at any frequency; no side effects.","responses":{"200":{"description":"Service is healthy.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/api/fuel-contact":{"post":{"operationId":"submitContactInquiry","tags":["contact"],"summary":"Submit a project inquiry to the studio","description":"Submits a contact-form inquiry to the Developh studio inbox (average reply: 2–8 business hours). Call this only for genuine project inquiries, collaborations, or questions — never for testing or bulk messaging. The body is multipart/form-data because the endpoint also backs the website's HTML contact form.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/ContactInquiry"}}}},"responses":{"200":{"description":"Inquiry stored and routed to the studio.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactSuccess"}}}},"400":{"description":"Malformed form data or validation failure (e.g. missing email or message). Fix the fields per error.hint and retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Backend unavailable. Retry later or email the studio directly.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"HealthResponse":{"type":"object","required":["status","service","time"],"properties":{"status":{"type":"string","const":"ok"},"service":{"type":"string","const":"developh-website"},"time":{"type":"string","format":"date-time","description":"Server time in ISO 8601 (UTC)."}}},"ContactInquiry":{"type":"object","required":["Name","Email","Message"],"properties":{"Name":{"type":"string","description":"Sender's name. The HTML form submits two fields named 'Name' (first + last); a single combined value is also accepted.","examples":["Ada Lovelace"]},"Email":{"type":"string","format":"email","description":"Reply-to email address of the person inquiring.","examples":["ada@example.com"]},"Category":{"type":"string","description":"Optional inquiry category, free text (e.g. 'Website', 'Branding', 'Product', 'Other').","examples":["Website"]},"Message":{"type":"string","description":"The inquiry itself: context, goals, and timing. A perfect brief is not required.","examples":["We need a new marketing site for our fintech startup, launching in Q1."]}}},"ContactSuccess":{"type":"object","required":["ok"],"properties":{"ok":{"type":"boolean","const":true}}},"ErrorResponse":{"type":"object","description":"Structured error emitted by every /api/* endpoint on failure. Agents should read error.code for branching and error.hint for how to resolve.","required":["ok","error"],"properties":{"ok":{"type":"boolean","const":false},"error":{"type":"object","required":["code","message","hint","docs"],"properties":{"code":{"type":"string","description":"Stable machine-readable error identifier.","enum":["bad-form","validation-failed","no-backend","not-found","internal-error"]},"message":{"type":"string","description":"Human-readable description of what went wrong."},"hint":{"type":"string","description":"How to fix the request or where to look next."},"docs":{"type":"string","format":"uri","description":"URL of this OpenAPI document."}}}}}}}}