{"openapi":"3.1.0","info":{"title":"Foral Data API","summary":"Foral Data API — Portuguese municipal intelligence (indicators + signals).","description":"Read-only API over Foral's proprietary municipal data. Authenticate with an API key (`Authorization: Bearer sk_live_...`). Errors are RFC 9457 problem+json with stable `type` URIs. Pagination is cursor-based (`?cursor=`, `?limit=`). Call `GET /v1/me` first to discover your plan's domains and limits. See `/llms.txt` for an agent index.","version":"1.0.0","x-foral-api-version":"2026-07"},"paths":{"/v1/me":{"get":{"tags":["meta"],"summary":"Whoami","description":"Who am I — account, plan, scopes, domains, limits, and current usage. Agents call this\nfirst to discover what they can do.","operationId":"meta_get_me","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeResponse"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/indicators":{"get":{"tags":["indicators"],"summary":"List Indicators","operationId":"indicators_list","parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPage_IndicatorSummary_"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/indicators/{key}":{"get":{"tags":["indicators"],"summary":"Get Indicator","operationId":"indicators_get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndicatorDetail"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/indicators/{key}/series":{"get":{"tags":["indicators"],"summary":"Get Series","operationId":"indicators_get_series","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"municipality","in":"query","required":true,"schema":{"type":"string","description":"Foral municipality code (4-digit, not INE DICOFRE) or slug","title":"Municipality"},"description":"Foral municipality code (4-digit, not INE DICOFRE) or slug"},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"To"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPage_SeriesPoint_"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/indicators/{key}/snapshot":{"get":{"tags":["indicators"],"summary":"Get Snapshot","operationId":"indicators_get_snapshot","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPage_SnapshotRow_"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/indicators/{key}/stats":{"get":{"tags":["indicators"],"summary":"Get Stats","operationId":"indicators_get_stats","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndicatorStats"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/municipalities":{"get":{"tags":["municipalities"],"summary":"List Municipalities","operationId":"municipalities_list","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"district","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"District"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPage_MunicipalitySummary_"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/municipalities/{code}":{"get":{"tags":["municipalities"],"summary":"Get Municipality","description":"Look up one municipality by its Foral code (4-digit, not INE DICOFRE) or slug.","operationId":"municipalities_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MunicipalitySummary"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/municipalities/{code}/indicators":{"get":{"tags":["municipalities"],"summary":"Get Municipality Indicators","operationId":"municipalities_get_indicators","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MunicipalityIndicatorValue"},"title":"Response Municipalities Get Indicators"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/signals":{"get":{"tags":["signals"],"summary":"List Signals","operationId":"signals_list","parameters":[{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family"}},{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeatable Foral municipality code or slug (<=50)","title":"Municipality"},"description":"Repeatable Foral municipality code or slug (<=50)"},{"name":"min_confidence","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.0,"default":0.0,"title":"Min Confidence"}},{"name":"value_tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Tier"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Watermark: only signals seen since this time","title":"Since"},"description":"Watermark: only signals seen since this time"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPage_SignalSummary_"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/signals/{signal_id}":{"get":{"tags":["signals"],"summary":"Get Signal","operationId":"signals_get","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"integer","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalDetail"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/signal-families":{"get":{"tags":["signals"],"summary":"List Signal Families","operationId":"signal_families_list","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SignalFamilyInfo"},"type":"array","title":"Response Signal Families List"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/signal-types":{"get":{"tags":["signals"],"summary":"List Signal Types","operationId":"signal_types_list","parameters":[{"name":"family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SignalTypeInfo"},"title":"Response Signal Types List"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/signal-cases":{"get":{"tags":["signals"],"summary":"List Signal Cases","operationId":"signal_cases_list","parameters":[{"name":"family","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Family"}},{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Repeatable Foral municipality code or slug (<=50)","title":"Municipality"},"description":"Repeatable Foral municipality code or slug (<=50)"},{"name":"include_episodic","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Episodic"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPage_SignalCaseSummary_"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/signal-cases/{case_id}":{"get":{"tags":["signals"],"summary":"Get Signal Case","operationId":"signal_cases_get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"integer","title":"Case Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalCaseDetail"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/alert-rules":{"get":{"tags":["alerts"],"summary":"List Alert Rules","description":"Your alert rules, including the predefined subscriptions you have turned on.","operationId":"alert_rules_list","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPage_AlertRuleSummary_"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/alert-matches":{"get":{"tags":["alerts"],"summary":"List Alert Matches","description":"Matches on your alert rules, newest first.\n\nBounded by your plan's alert-history window (`/v1/me` reports it). A `since` earlier than\nthat window is clamped to it rather than rejected — the same silent-clamp contract the\nindicator series uses for `history_years`.","operationId":"alert_matches_list","parameters":[{"name":"rule","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Only matches of this rule id","title":"Rule"},"description":"Only matches of this rule id"},{"name":"municipality","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"integer"}},{"type":"null"}],"description":"Repeatable municipality id (<=50)","title":"Municipality"},"description":"Repeatable municipality id (<=50)"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"matched | dismissed","title":"Status"},"description":"matched | dismissed"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Only matches after this time (narrows the plan window, never widens it)","title":"Since"},"description":"Only matches after this time (narrows the plan window, never widens it)"},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CursorPage_AlertMatchSummary_"}}}},"422":{"description":"validation-error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"400":{"description":"invalid-cursor","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"invalid-auth","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"402":{"description":"quota-exceeded","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"beta-access-required / api-access-required / domain-not-in-plan / insufficient-scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"not-found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"method-not-allowed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"rate-limited","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"AlertJudge":{"properties":{"is_direct_action":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Direct Action"},"action_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action Type"},"why_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Why Pt"},"why_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Why En"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"}},"type":"object","title":"AlertJudge","description":"The Premium AI verdict on a match. ANNOTATION ONLY — `is_direct_action: false` labels a\npassing mention, it never means the alert was withheld. Absent on plans without the\njudge, and while a verdict is still pending."},"AlertMatchSummary":{"properties":{"id":{"type":"integer","title":"Id"},"rule_id":{"type":"integer","title":"Rule Id"},"rule_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rule Name"},"source_type":{"type":"string","title":"Source Type"},"municipality_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Municipality Id"},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Snippet"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"status":{"type":"string","title":"Status"},"matched_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matched At"},"case_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Case Id"},"judge":{"anyOf":[{"$ref":"#/components/schemas/AlertJudge"},{"type":"null"}]}},"type":"object","required":["id","rule_id","source_type","status"],"title":"AlertMatchSummary"},"AlertRuleSummary":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"matcher_type":{"type":"string","title":"Matcher Type"},"source_types":{"items":{"type":"string"},"type":"array","title":"Source Types","default":[]},"municipality_ids":{"items":{"type":"integer"},"type":"array","title":"Municipality Ids","default":[]},"target_scope":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target Scope"},"enabled":{"type":"boolean","title":"Enabled"},"template_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Template Id"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","name","matcher_type","enabled"],"title":"AlertRuleSummary"},"CursorPage_AlertMatchSummary_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AlertMatchSummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["items"],"title":"CursorPage[AlertMatchSummary]"},"CursorPage_AlertRuleSummary_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AlertRuleSummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["items"],"title":"CursorPage[AlertRuleSummary]"},"CursorPage_IndicatorSummary_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/IndicatorSummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["items"],"title":"CursorPage[IndicatorSummary]"},"CursorPage_MunicipalitySummary_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MunicipalitySummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["items"],"title":"CursorPage[MunicipalitySummary]"},"CursorPage_SeriesPoint_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SeriesPoint"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["items"],"title":"CursorPage[SeriesPoint]"},"CursorPage_SignalCaseSummary_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SignalCaseSummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["items"],"title":"CursorPage[SignalCaseSummary]"},"CursorPage_SignalSummary_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SignalSummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["items"],"title":"CursorPage[SignalSummary]"},"CursorPage_SnapshotRow_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SnapshotRow"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"has_more":{"type":"boolean","title":"Has More","default":false}},"type":"object","required":["items"],"title":"CursorPage[SnapshotRow]"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IndicatorDetail":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"name_pt":{"type":"string","title":"Name Pt"},"category":{"type":"string","title":"Category"},"unit":{"type":"string","title":"Unit"},"unit_display":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit Display"},"direction":{"type":"string","title":"Direction"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"country_code":{"type":"string","title":"Country Code"},"value_domain":{"type":"string","title":"Value Domain"},"treatment":{"type":"string","title":"Treatment"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary"},"summary_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Pt"},"currency_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency Code"},"scale_factor":{"type":"number","title":"Scale Factor","default":1.0},"per_capita":{"type":"boolean","title":"Per Capita","default":false},"unit_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit Description"}},"type":"object","required":["key","name","name_pt","category","unit","direction","country_code","value_domain","treatment"],"title":"IndicatorDetail"},"IndicatorStats":{"properties":{"indicator":{"type":"string","title":"Indicator"},"count":{"type":"integer","title":"Count"},"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max"},"mean":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mean"},"median":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median"},"as_of":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"As Of"}},"type":"object","required":["indicator","count"],"title":"IndicatorStats"},"IndicatorSummary":{"properties":{"key":{"type":"string","title":"Key"},"name":{"type":"string","title":"Name"},"name_pt":{"type":"string","title":"Name Pt"},"category":{"type":"string","title":"Category"},"unit":{"type":"string","title":"Unit"},"unit_display":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit Display"},"direction":{"type":"string","title":"Direction"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"country_code":{"type":"string","title":"Country Code"},"value_domain":{"type":"string","title":"Value Domain"},"treatment":{"type":"string","title":"Treatment"}},"type":"object","required":["key","name","name_pt","category","unit","direction","country_code","value_domain","treatment"],"title":"IndicatorSummary"},"MeLimits":{"properties":{"requests_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requests Per Minute"},"requests_per_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requests Per Month"},"history_years":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"History Years"},"alerts_history_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Alerts History Days"}},"type":"object","title":"MeLimits"},"MeResponse":{"properties":{"account_id":{"type":"integer","title":"Account Id"},"plan_code":{"type":"string","title":"Plan Code"},"beta":{"type":"boolean","title":"Beta"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"domains":{"items":{"type":"string"},"type":"array","title":"Domains"},"raw_values":{"type":"boolean","title":"Raw Values"},"limits":{"$ref":"#/components/schemas/MeLimits"},"usage":{"$ref":"#/components/schemas/MeUsage"}},"type":"object","required":["account_id","plan_code","beta","scopes","domains","raw_values","limits","usage"],"title":"MeResponse"},"MeUsage":{"properties":{"requests_this_month":{"type":"integer","title":"Requests This Month"},"requests_remaining":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requests Remaining"},"period_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Period End"}},"type":"object","required":["requests_this_month"],"title":"MeUsage"},"MunicipalityIndicatorValue":{"properties":{"indicator":{"type":"string","title":"Indicator"},"name":{"type":"string","title":"Name"},"category":{"type":"string","title":"Category"},"reference_date":{"type":"string","title":"Reference Date"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"treatment":{"type":"string","title":"Treatment"}},"type":"object","required":["indicator","name","category","reference_date","treatment"],"title":"MunicipalityIndicatorValue"},"MunicipalitySummary":{"properties":{"code":{"type":"string","title":"Code","description":"Foral municipality code (4-digit, e.g. '1106') — a stable Foral identifier, NOT the official INE DICOFRE."},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"district":{"type":"string","title":"District"},"nuts_ii":{"type":"string","title":"Nuts Ii"},"nuts_iii":{"type":"string","title":"Nuts Iii"}},"type":"object","required":["code","slug","name","district","nuts_ii","nuts_iii"],"title":"MunicipalitySummary"},"SeriesPoint":{"properties":{"municipality":{"type":"string","title":"Municipality","description":"Foral municipality code (4-digit, e.g. '1106') — a stable Foral identifier, NOT the official INE DICOFRE."},"reference_date":{"type":"string","title":"Reference Date"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"treatment":{"type":"string","title":"Treatment"}},"type":"object","required":["municipality","reference_date","treatment"],"title":"SeriesPoint"},"SignalCaseDetail":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"type":"string","title":"Type"},"family":{"type":"string","title":"Family"},"municipality_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Municipality Id"},"title_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Pt"},"summary_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Pt"},"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage"},"status":{"type":"string","title":"Status"},"value_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Tier"},"confidence":{"type":"number","title":"Confidence"},"source_count":{"type":"integer","title":"Source Count"},"deadline_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deadline Date"},"amount_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Eur"},"first_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Seen At"},"last_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen At"},"previous_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Previous Stage"},"location_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Text"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"},"events":{"items":{"$ref":"#/components/schemas/SignalCaseEventItem"},"type":"array","title":"Events","default":[]},"linked_signals":{"items":{"$ref":"#/components/schemas/SignalCaseLinkItem"},"type":"array","title":"Linked Signals","default":[]}},"type":"object","required":["id","type","family","status","confidence","source_count"],"title":"SignalCaseDetail"},"SignalCaseEventItem":{"properties":{"event_type":{"type":"string","title":"Event Type"},"old_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Old Value"},"new_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"New Value"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["event_type"],"title":"SignalCaseEventItem"},"SignalCaseLinkItem":{"properties":{"signal_id":{"type":"integer","title":"Signal Id"},"relationship":{"type":"string","title":"Relationship"},"title_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Pt"},"confidence":{"type":"number","title":"Confidence"}},"type":"object","required":["signal_id","relationship","confidence"],"title":"SignalCaseLinkItem"},"SignalCaseSummary":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"type":"string","title":"Type"},"family":{"type":"string","title":"Family"},"municipality_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Municipality Id"},"title_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Pt"},"summary_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Pt"},"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage"},"status":{"type":"string","title":"Status"},"value_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Tier"},"confidence":{"type":"number","title":"Confidence"},"source_count":{"type":"integer","title":"Source Count"},"deadline_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deadline Date"},"amount_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Eur"},"first_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Seen At"},"last_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen At"}},"type":"object","required":["id","type","family","status","confidence","source_count"],"title":"SignalCaseSummary"},"SignalDetail":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"type":"string","title":"Type"},"family":{"type":"string","title":"Family"},"municipality_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Municipality Id"},"title_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Pt"},"title_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title En"},"summary_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Pt"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"status":{"type":"string","title":"Status"},"value_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Tier"},"confidence":{"type":"number","title":"Confidence"},"deadline_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deadline Date"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"},"amount_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Eur"},"location_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Text"},"actionability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actionability"},"first_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Seen At"},"last_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen At"},"summary_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary En"},"why_it_matters_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Why It Matters Pt"},"why_it_matters_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Why It Matters En"},"next_step_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Step Pt"},"evidence":{"items":{"$ref":"#/components/schemas/SignalEvidenceItem"},"type":"array","title":"Evidence","default":[]}},"type":"object","required":["id","type","family","status","confidence"],"title":"SignalDetail"},"SignalEvidenceItem":{"properties":{"source_type":{"type":"string","title":"Source Type"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"source_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Title"},"source_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Date"},"excerpt_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Excerpt Pt"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"}},"type":"object","required":["source_type"],"title":"SignalEvidenceItem"},"SignalFamilyInfo":{"properties":{"key":{"type":"string","title":"Key"},"label_pt":{"type":"string","title":"Label Pt"},"label_en":{"type":"string","title":"Label En"},"description_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Pt"}},"type":"object","required":["key","label_pt","label_en"],"title":"SignalFamilyInfo"},"SignalSummary":{"properties":{"id":{"type":"integer","title":"Id"},"type":{"type":"string","title":"Type"},"family":{"type":"string","title":"Family"},"municipality_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Municipality Id"},"title_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title Pt"},"title_en":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title En"},"summary_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary Pt"},"stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stage"},"status":{"type":"string","title":"Status"},"value_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Value Tier"},"confidence":{"type":"number","title":"Confidence"},"deadline_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Deadline Date"},"event_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Date"},"amount_eur":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Eur"},"location_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Text"},"actionability":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actionability"},"first_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Seen At"},"last_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Seen At"}},"type":"object","required":["id","type","family","status","confidence"],"title":"SignalSummary"},"SignalTypeInfo":{"properties":{"key":{"type":"string","title":"Key"},"family":{"type":"string","title":"Family"},"label_pt":{"type":"string","title":"Label Pt"},"label_en":{"type":"string","title":"Label En"},"description_pt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description Pt"}},"type":"object","required":["key","family","label_pt","label_en"],"title":"SignalTypeInfo"},"SnapshotRow":{"properties":{"municipality":{"type":"string","title":"Municipality","description":"Foral municipality code (4-digit, e.g. '1106') — a stable Foral identifier, NOT the official INE DICOFRE."},"name":{"type":"string","title":"Name"},"district":{"type":"string","title":"District"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"percentile":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentile"},"is_stale":{"type":"boolean","title":"Is Stale","default":false},"treatment":{"type":"string","title":"Treatment"}},"type":"object","required":["municipality","name","district","treatment"],"title":"SnapshotRow"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Problem":{"type":"object","description":"RFC 9457 problem document (application/problem+json).","properties":{"type":{"type":"string","format":"uri","description":"Stable error-type URI"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string"},"request_id":{"type":"string"},"feature_key":{"type":"string"},"upgrade_url":{"type":"string"}},"required":["type","title","status"]}},"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"sk_live_...","description":"Your API key. `X-API-Key: sk_live_...` is accepted as a fallback."}}},"servers":[{"url":"https://data.foral.ai"}],"security":[{"ApiKeyAuth":[]}]}