{"components":{"schemas":{"IssueAPIKeyRequest":{"properties":{"expires_at":{"example":"2027-01-01T00:00:00Z","format":"date-time","type":"string"},"key_name":{"example":"seek-prod-client","type":"string"},"scopes":{"example":["models:read","translate:write"],"items":{"type":"string"},"type":"array"},"service_name":{"example":"seek-api","type":"string"}},"required":["service_name","key_name"],"type":"object"},"ValidateAPIKeyRequest":{"properties":{"api_key":{"description":"Optional when Authorization: Bearer is used","type":"string"},"audience":{"example":"seek-api","type":"string"}},"required":["audience"],"type":"object"}},"securitySchemes":{"adminToken":{"in":"header","name":"X-Auth-Admin-Token","type":"apiKey"}}},"info":{"description":"Shared authentication service for DonghoLab services. API keys are issued once, stored as hashes, and validated by service audience.","title":"Dongholab Auth","version":"0.1.0"},"openapi":"3.1.0","paths":{"/auth/github/callback":{"get":{"responses":{"302":{"description":"Session cookie issued and redirected to docs"}},"summary":"GitHub OAuth callback"}},"/auth/github/login":{"get":{"responses":{"302":{"description":"Redirect to GitHub"}},"summary":"Start GitHub OAuth login for protected docs"}},"/auth/logout":{"get":{"responses":{"302":{"description":"Redirect to login"}},"summary":"Clear docs session"}},"/auth/me":{"get":{"responses":{"200":{"description":"Current session"},"401":{"description":"Not logged in"}},"summary":"Current GitHub-authenticated docs user"}},"/auth/verify":{"get":{"responses":{"204":{"description":"Authenticated"},"302":{"description":"Redirect to GitHub login"}},"summary":"Caddy forward_auth verification endpoint"}},"/healthz":{"get":{"responses":{"200":{"description":"Service is healthy"}},"summary":"Health check"}},"/v1/api-keys":{"post":{"description":"Admin-only endpoint. Returns the plaintext key only once.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueAPIKeyRequest"}}},"required":true},"responses":{"201":{"description":"Issued API key"},"401":{"description":"Admin token required"}},"security":[{"adminToken":[]}],"summary":"Issue an API key"}},"/v1/validate":{"post":{"description":"Called by downstream services to validate a client key for a service audience.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateAPIKeyRequest"}}},"required":true},"responses":{"200":{"description":"Validation result"}},"summary":"Validate an API key"}}},"servers":[{"description":"Production","url":"https://auth.dongholab.com"},{"description":"Local loopback","url":"http://127.0.0.1:3320"}]}
