{"openapi":"3.1.0","info":{"title":"ODam Events public data","version":"1.0.0","description":"Georgia event listings. Preserve source links, unknown hours and approximate area locations. The events endpoints provide the smaller separately approved reuse catalog."},"servers":[{"url":"https://events.odam.app"}],"paths":{"/api/v1/events":{"get":{"summary":"List published Georgia events","parameters":[{"name":"from","in":"query","schema":{"type":"string"}},{"name":"to","in":"query","schema":{"type":"string"}},{"name":"county","in":"query","schema":{"type":"string"}},{"name":"city","in":"query","schema":{"type":"string"}},{"name":"cursor","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Published events, catalogVersion, generatedAt and nextCursor"},"400":{"description":"Invalid query"},"409":{"description":"Catalog changed; restart pagination"}}}},"/api/v1/events/{id}":{"get":{"summary":"Get one published occurrence","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Published event"},"404":{"description":"Not found"}}}},"/api/v1/listings":{"get":{"summary":"Read the complete public listing chunk index","description":"Fetch every ordered chunk path and verify its SHA-256. This endpoint returns an index, not a filtered event page.","responses":{"200":{"description":"Versioned listing index and chunk digests","content":{"application/json":{"schema":{"type":"object","required":["catalogVersion","generatedAt","recordCount","chunks"],"properties":{"catalogVersion":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"},"recordCount":{"type":"integer"},"chunks":{"type":"array","items":{"type":"object","required":["path","count","bytes","sha256"],"properties":{"path":{"type":"string"},"count":{"type":"integer"},"bytes":{"type":"integer"},"sha256":{"type":"string"}}}}}}}}}}}},"/api/v1/listings/{id}":{"get":{"summary":"Get one public event listing","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Event facts, source and accuracy information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicListing"}}}},"404":{"description":"Listing not found"},"503":{"description":"Current assets unavailable"}}}}},"components":{"schemas":{"PublicListing":{"type":"object","required":["id","title","startDate","endDate","source","venue"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"startAt":{"type":["string","null"],"format":"date-time"},"endAt":{"type":["string","null"],"format":"date-time"},"timePrecision":{"type":"string","enum":["time","date","start"],"description":"Date means hours unknown; start means end time unknown. Separately approved records may omit this field."},"endDateExclusive":{"type":"boolean"},"status":{"type":"string","enum":["scheduled","cancelled","postponed","rescheduled","tentative","unknown"]},"attendanceNotes":{"type":"array","items":{"type":"string"}},"source":{"type":"object","required":["url","observedAt","reuseApproved"],"properties":{"url":{"type":"string","format":"uri"},"observedAt":{"type":"string","format":"date-time"},"checkedAt":{"type":"string","format":"date-time"},"reuseApproved":{"type":"boolean","description":"False is not a third-party redistribution license."}}},"venue":{"type":"object","description":"Original venue facts; coordinates may be null."},"mapLocation":{"type":"object","description":"Approximate city/county area, never an exact venue pin.","properties":{"precision":{"enum":["city","county"]},"venueAccuracy":{"const":false}}}}}}}}