{"openapi":"3.1.0","info":{"title":"Civic Translator Public API","version":"1.1.0","description":"Public discovery endpoints and authenticated read-only access to Civic Translator meeting and packet summaries.","contact":{"name":"Civic Translator","url":"https://civic-translator.org/contact"}},"servers":[{"url":"https://civic-translator.org"}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Required for protected summary endpoints. Contact Civic Translator to request an API key."}}},"paths":{"/api/v1":{"get":{"summary":"API information","responses":{"200":{"description":"API metadata"}}}},"/api/v1/health":{"get":{"summary":"API health check","responses":{"200":{"description":"Service is available"}}}},"/api/v1/public-bodies":{"get":{"summary":"List public bodies","description":"Public endpoint. No API key required.","responses":{"200":{"description":"Public body results"}}}},"/api/v1/summaries-preview":{"get":{"summary":"List public summary previews","description":"Public endpoint returning limited descriptions, topics, page links, and image links. Full text requires an API key.","parameters":[{"name":"state","in":"query","schema":{"type":"string"}},{"name":"governmentBody","in":"query","schema":{"type":"string"}},{"name":"publicBody","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string"}},{"name":"topic","in":"query","schema":{"type":"string"}},{"name":"summaryType","in":"query","schema":{"type":"string","enum":["packet-summary","meeting-summary"]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":25}}],"responses":{"200":{"description":"Public summary previews"}}}},"/api/v1/summaries":{"get":{"summary":"List published summaries","security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Summary results"},"401":{"description":"API key required"}}}},"/api/v1/summaries/{state}/{governmentBody}/{publicBody}/{meetingDate}/{summaryType}":{"get":{"summary":"Get one detailed summary","security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Detailed summary"},"401":{"description":"API key required"},"404":{"description":"Summary not found"}}}}}}