{"openapi":"3.0.0","info":{"title":"UBI RADAR API","version":"1.0.0","description":"Public read API for 195 country files, programmes, facts pipeline and jobs."},"servers":[{"url":"https://ubiradar.com"}],"paths":{"/api/v1/countries":{"get":{"summary":"List 195 countries","responses":{"200":{"description":"OK"}}}},"/api/v1/countries/{iso}":{"get":{"summary":"One country plus programmes","parameters":[{"name":"iso","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"404":{"description":"Not found"}}}},"/api/v1/programs":{"get":{"summary":"Programmes, pilots, adjacent income","responses":{"200":{"description":"OK"}}}},"/api/v1/updates":{"get":{"summary":"Timeline events","responses":{"200":{"description":"OK"}}}},"/api/v1/facts":{"get":{"summary":"Observations, candidates, canonical facts","responses":{"200":{"description":"OK"}}}},"/api/v1/jobs":{"get":{"summary":"Job catalogue and last seed run","responses":{"200":{"description":"OK"}}}},"/api/v1/keywords":{"get":{"summary":"Keyword → intent → URL map","responses":{"200":{"description":"OK"}}}},"/api/v1/alerts":{"post":{"summary":"Register an email alert and send a magic-link confirmation (Resend)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"credential":{"type":"string","description":"Google Identity Services ID token. If present, email is taken from the verified JWT; the client-supplied email is ignored."},"iso":{"type":"array","items":{"type":"string"}},"token":{"type":"string"},"lang":{"type":"string","enum":["es","en"]}}}}}},"responses":{"200":{"description":"Sent"},"400":{"description":"Invalid email"},"502":{"description":"Resend error"}}},"get":{"summary":"Alert endpoint status (configured, no secrets)","responses":{"200":{"description":"OK"}}}}}}