{"openapi":"3.1.0","info":{"title":"CFP API","version":"1.0.0","description":"Open calls for speakers (CFPs) at data, AI and developer conferences, by deadline. Deadlines as the organizers state them; check the call itself before you submit. Free to read; cite CFP (cfp.fru.dev). Responses are cached for an hour.","contact":{"email":"fru.dev3@gmail.com"}},"servers":[{"url":"https://cfp.fru.dev"}],"paths":{"/api/cfps":{"get":{"operationId":"listCfps","summary":"Calls for speakers, soonest deadline first","parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["open","closed","all"],"default":"open"}},{"name":"topic","in":"query","schema":{"type":"string"},"description":"Topic key, e.g. ai, data, kubernetes"},{"name":"format","in":"query","schema":{"type":"string","enum":["in-person","online","hybrid"]}},{"name":"travel","in":"query","schema":{"type":"integer","enum":[1]},"description":"Only calls that state travel or hotel support"},{"name":"q","in":"query","schema":{"type":"string"},"description":"Words that must all appear (name, organizer, city, topic)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/cfps/{id}":{"get":{"operationId":"getCfp","summary":"One call with its organizer and change history","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Unknown call"}}}},"/api/changes":{"get":{"operationId":"listChanges","summary":"Append-only change log: created, cfp_closes (moved deadline), event_start, city, support, verified, techconf, closed","parameters":[{"name":"since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only changes after this time (UTC)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":500,"default":200}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/companies":{"get":{"operationId":"listCompanies","summary":"Organizers for the companies.fru.dev registry sync: slug (registry rule), name, domain, CFP URL, dated items (call deadlines)","parameters":[{"name":"since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Only organizers whose row or calls changed after this time (UTC)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":100}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/topics":{"get":{"operationId":"listTopics","summary":"Topics with open and total counts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/search":{"get":{"operationId":"search","summary":"Search calls, organizers and pages","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/calendar.ics":{"get":{"operationId":"calendarFeed","summary":"Open deadlines as iCalendar","parameters":[{"name":"topic","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"text/calendar":{"schema":{"type":"string"}}}}}}}}}