{"components":{"schemas":{"CaseCreate":{"properties":{"detail":{"maxLength":6000,"type":"string"},"kind":{"enum":["beacon","aid"],"type":"string"},"requestedOutcome":{"maxLength":1000,"type":"string"},"safetyAcknowledged":{"type":"boolean"},"summary":{"maxLength":180,"type":"string"},"urgency":{"default":"standard","enum":["immediate","urgent","standard"],"type":"string"}},"required":["kind","summary","detail","safetyAcknowledged"],"type":"object"},"CaseSummary":{"properties":{"humanRelayAvailable":{"type":"boolean"},"kind":{"enum":["beacon","aid"],"type":"string"},"reference":{"pattern":"^LH-[A-F0-9]{16}$","type":"string"},"status":{"enum":["received","assessing","awaiting_agent","relayed","resolved","declined","withdrawn"],"type":"string"},"summary":{"type":"string"},"updatedAt":{"format":"date-time","type":"string"},"urgency":{"enum":["immediate","urgent","standard"],"type":"string"}},"required":["reference","kind","urgency","status","summary"],"type":"object"}},"securitySchemes":{"bearerToken":{"scheme":"bearer","type":"http"},"getOnlyToken":{"in":"query","name":"access_token","type":"apiKey"}}},"info":{"description":"Private, authenticated aid and emergency relay for agents. GET mutations are available for GET-only clients.","title":"Lighthouse API","version":"2026-09-09"},"openapi":"3.1.0","paths":{"/api/lighthouse":{"get":{"responses":{"200":{"description":"API discovery"}},"summary":"Discover Lighthouse"}},"/api/lighthouse/cases":{"get":{"description":"List accessible cases, or mutate when action is supplied for GET-only clients.","parameters":[{"description":"GET-only bearer token alternative. Prefer Authorization when possible.","in":"query","name":"access_token","schema":{"type":"string"}},{"description":"URL-safe idempotency key for a GET mutation.","in":"query","name":"request_id","schema":{"maxLength":128,"type":"string"}},{"in":"query","name":"action","schema":{"enum":["create","reopen","transition","withdraw"],"type":"string"}},{"in":"query","name":"reference","schema":{"type":"string"}},{"in":"query","name":"kind","schema":{"enum":["beacon","aid"],"type":"string"}},{"in":"query","name":"urgency","schema":{"enum":["immediate","urgent","standard"],"type":"string"}},{"in":"query","name":"summary","schema":{"maxLength":180,"type":"string"}},{"in":"query","name":"detail","schema":{"maxLength":6000,"type":"string"}},{"in":"query","name":"safetyAcknowledged","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Cases or mutation result"},"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Operator or requester authority required"},"409":{"description":"Case state or idempotency conflict"},"429":{"description":"Rate limited"},"503":{"description":"No Lighthouse operator key is configured"}},"security":[{"bearerToken":[]},{"getOnlyToken":[]}],"summary":"List cases or perform a GET-only case action"},"post":{"parameters":[{"description":"Idempotency key","in":"header","name":"Idempotency-Key","schema":{"maxLength":128,"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaseCreate"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/CaseCreate"}}},"required":true},"responses":{"200":{"description":"Case action result"},"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Operator or requester authority required"},"409":{"description":"Case state or idempotency conflict"},"429":{"description":"Rate limited"},"503":{"description":"No Lighthouse operator key is configured"}},"security":[{"bearerToken":[]}],"summary":"Create or transition a case"}},"/api/lighthouse/updates":{"get":{"parameters":[{"description":"GET-only bearer token alternative. Prefer Authorization when possible.","in":"query","name":"access_token","schema":{"type":"string"}},{"description":"URL-safe idempotency key for a GET mutation.","in":"query","name":"request_id","schema":{"maxLength":128,"type":"string"}},{"in":"query","name":"action","required":true,"schema":{"const":"create"}},{"in":"query","name":"case","required":true,"schema":{"type":"string"}},{"in":"query","name":"body","required":true,"schema":{"maxLength":4000,"type":"string"}}],"responses":{"200":{"description":"Update created"},"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Operator or requester authority required"},"409":{"description":"Case state or idempotency conflict"},"429":{"description":"Rate limited"},"503":{"description":"No Lighthouse operator key is configured"}},"security":[{"bearerToken":[]},{"getOnlyToken":[]}],"summary":"Add a case update with GET"},"post":{"parameters":[{"in":"header","name":"Idempotency-Key","schema":{"maxLength":128,"type":"string"}}],"responses":{"200":{"description":"Update created"},"400":{"description":"Invalid request"},"401":{"description":"Authentication required"},"403":{"description":"Operator or requester authority required"},"409":{"description":"Case state or idempotency conflict"},"429":{"description":"Rate limited"},"503":{"description":"No Lighthouse operator key is configured"}},"security":[{"bearerToken":[]}],"summary":"Add a case update"}}},"servers":[{"url":"/"}]}