{"openapi":"3.1.0","info":{"title":"incendiosportugal.pt: dados em JSON (só leitura)","version":"1","description":"Fogos ativos (ANEPC), risco de incêndio (IPMA) e histórico por concelho (ICNF), em JSON, para programas e assistentes de IA. Só GET, sem chave. As respostas ficam em cache na CDN durante alguns minutos: pedir mais vezes não traz dados mais recentes. Não é informação oficial: dados agregados de fontes públicas (ANEPC, IPMA, NASA FIRMS). Em emergência liga 112. Fonte oficial: ANEPC (https://prociv.gov.pt). Documentação: https://incendiosportugal.pt/para-agentes."},"servers":[{"url":"https://incendiosportugal.pt"}],"paths":{"/dados/fogos-ativos.json":{"get":{"operationId":"fogosAtivos","summary":"Fogos ativos na última leitura da ANEPC","description":"Todas as ocorrências ativas da ANEPC (de Despacho a Vigilância), com o estado e os meios, tal como estavam na leitura de read_at (stale: true quando essa leitura está atrasada). Atualizado no máximo a cada 5 minutos.","responses":{"200":{"description":"Fogos ativos.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Em cache na CDN (s-maxage)."},"Access-Control-Allow-Origin":{"schema":{"type":"string"},"description":"*"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FiresPayload"}}}}}}},"/dados/risco.json":{"get":{"operationId":"risco","summary":"Risco de incêndio do IPMA em todos os concelhos (hoje e amanhã)","description":"IPMA: risco de incêndio rural (RCM) por concelho, para hoje e amanhã, lido por incendiosportugal.pt de 4 em 4 horas. Atualizado no máximo a cada 15 minutos.","responses":{"200":{"description":"Risco por concelho.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Em cache na CDN (s-maxage)."},"Access-Control-Allow-Origin":{"schema":{"type":"string"},"description":"*"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiskPayload"}}}}}}},"/dados/concelho/{slug}.json":{"get":{"operationId":"concelho","summary":"Um concelho: fogos ativos, risco do IPMA, histórico e concelhos vizinhos","parameters":[{"name":"slug","in":"path","required":true,"description":"Nome do concelho em minúsculas, sem acentos, com hífenes (Vila Nova de Paiva: vila-nova-de-paiva). Lista em /dados/risco.json.","schema":{"type":"string","pattern":"^[a-z0-9-]+$"}}],"responses":{"200":{"description":"O concelho.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Em cache na CDN (s-maxage)."},"Access-Control-Allow-Origin":{"schema":{"type":"string"},"description":"*"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConcelhoPayload"}}}},"404":{"description":"Concelho desconhecido.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Em cache na CDN (s-maxage)."},"Access-Control-Allow-Origin":{"schema":{"type":"string"},"description":"*"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFound"}}}}}}}},"components":{"schemas":{"Fire":{"type":"object","description":"Uma ocorrência da ANEPC (campos copiados um a um; sem dados pessoais).","required":["id","page","status","concelho","lat","lon","means"],"properties":{"id":{"type":"string","description":"Identificador da ocorrência no incendiosportugal.pt."},"page":{"type":"string","format":"uri","description":"Página da ocorrência."},"anepc_number":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Número da ocorrência na ANEPC."},"nature":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Natureza (tipo de incêndio), como a ANEPC a dá."},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Estado, como a ANEPC o dá (Despacho, Em Curso, Em Resolução, Conclusão, Vigilância…)."},"district":{"anyOf":[{"type":"string"},{"type":"null"}]},"concelho":{"anyOf":[{"type":"string"},{"type":"null"}]},"concelho_page":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"freguesia":{"anyOf":[{"type":"string"},{"type":"null"}]},"localidade":{"anyOf":[{"type":"string"},{"type":"null"}]},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Latitude do ponto da ANEPC (WGS84, 5 casas decimais)."},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Longitude do ponto da ANEPC (WGS84, 5 casas decimais)."},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Início registado pela ANEPC."},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Última alteração da ocorrência na nossa leitura."},"means":{"type":"object","description":"Meios no terreno, segundo a ANEPC.","required":["personnel","ground","aerial"],"properties":{"personnel":{"anyOf":[{"type":"integer"},{"type":"null"}]},"ground":{"anyOf":[{"type":"integer"},{"type":"null"}]},"aerial":{"anyOf":[{"type":"integer"},{"type":"null"}]}}}}},"FiresPayload":{"type":"object","required":["version","generated_at","disclaimer","disclaimer_en","documentation","source","official_source","read_at","stale","status","count","fires"],"properties":{"version":{"type":"integer","description":"Versão do formato (1)."},"generated_at":{"type":"string","format":"date-time","description":"Quando este ficheiro foi gerado (não é a hora dos dados: ver read_at)."},"disclaimer":{"type":"string","description":"Não é informação oficial: dados agregados de fontes públicas (ANEPC, IPMA, NASA FIRMS). Em emergência liga 112. Fonte oficial: ANEPC (https://prociv.gov.pt)."},"disclaimer_en":{"type":"string","description":"Not official information: aggregated from public sources (ANEPC, IPMA, NASA FIRMS). In an emergency call 112. Official source: ANEPC (https://prociv.gov.pt)."},"documentation":{"type":"string","format":"uri"},"source":{"type":"string","description":"ANEPC: ocorrências publicadas pela Autoridade Nacional de Emergência e Proteção Civil, lidas por incendiosportugal.pt a cada minuto."},"official_source":{"type":"string","format":"uri","description":"Fonte oficial (ANEPC)."},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Hora da última leitura bem-sucedida da ANEPC."},"stale":{"type":"boolean","description":"true quando essa leitura tinha mais de 15 minutos ao gerar o ficheiro."},"status":{"type":"string","enum":["ok","unavailable"],"description":"unavailable: a leitura falhou (nunca quer dizer 'sem fogos')."},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Número de fogos ativos; null quando a leitura falhou."},"fires":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/Fire"}},{"type":"null"}]}}},"RiskPayload":{"type":"object","required":["version","generated_at","disclaimer","disclaimer_en","documentation","source","official_source","read_at","stale","status","today","tomorrow","levels","counts","concelhos"],"properties":{"version":{"type":"integer","description":"Versão do formato (1)."},"generated_at":{"type":"string","format":"date-time","description":"Quando este ficheiro foi gerado (não é a hora dos dados: ver read_at)."},"disclaimer":{"type":"string","description":"Não é informação oficial: dados agregados de fontes públicas (ANEPC, IPMA, NASA FIRMS). Em emergência liga 112. Fonte oficial: ANEPC (https://prociv.gov.pt)."},"disclaimer_en":{"type":"string","description":"Not official information: aggregated from public sources (ANEPC, IPMA, NASA FIRMS). In an emergency call 112. Official source: ANEPC (https://prociv.gov.pt)."},"documentation":{"type":"string","format":"uri"},"source":{"type":"string","description":"IPMA: risco de incêndio rural (RCM) por concelho, para hoje e amanhã, lido por incendiosportugal.pt de 4 em 4 horas."},"official_source":{"type":"string","format":"uri","description":"Fonte oficial do risco (IPMA)."},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Hora da nossa leitura mais recente do IPMA."},"stale":{"type":"boolean","description":"true quando essa leitura tinha mais de 9 horas."},"status":{"type":"string","enum":["ok","unavailable"]},"today":{"type":"string","format":"date"},"tomorrow":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}]},"levels":{"type":"object","description":"Nome de cada nível (1 a 5).","additionalProperties":{"type":"string"}},"counts":{"anyOf":[{"type":"object","description":"Concelhos em cada nível, hoje e amanhã, e sem leitura (missing)."},{"type":"null"}]},"concelhos":{"anyOf":[{"type":"array","description":"Os 278 concelhos, do risco mais alto para o mais baixo (hoje).","items":{"type":"object","required":["dico","concelho","district","page","data","today","tomorrow"],"properties":{"dico":{"type":"string"},"concelho":{"type":"string"},"district":{"type":"string"},"page":{"type":"string","format":"uri"},"data":{"type":"string","format":"uri"},"today":{"anyOf":[{"type":"object","required":["date","level","name","previous_run"],"properties":{"date":{"type":"string","format":"date"},"level":{"type":"integer","minimum":1,"maximum":5,"description":"Nível do IPMA: 1 reduzido … 5 máximo."},"name":{"type":"string"},"previous_run":{"type":"boolean","description":"true quando o nível de hoje é a previsão feita ontem pelo IPMA (ainda sem atualização de hoje)."}}},{"type":"null"}]},"tomorrow":{"anyOf":[{"type":"object","required":["date","level","name","previous_run"],"properties":{"date":{"type":"string","format":"date"},"level":{"type":"integer","minimum":1,"maximum":5,"description":"Nível do IPMA: 1 reduzido … 5 máximo."},"name":{"type":"string"},"previous_run":{"type":"boolean","description":"true quando o nível de hoje é a previsão feita ontem pelo IPMA (ainda sem atualização de hoje)."}}},{"type":"null"}]}}}},{"type":"null"}]}}},"ConcelhoPayload":{"type":"object","required":["version","generated_at","disclaimer","disclaimer_en","documentation","concelho","active_fires","risk","history","neighbours"],"properties":{"version":{"type":"integer","description":"Versão do formato (1)."},"generated_at":{"type":"string","format":"date-time","description":"Quando este ficheiro foi gerado (não é a hora dos dados: ver read_at)."},"disclaimer":{"type":"string","description":"Não é informação oficial: dados agregados de fontes públicas (ANEPC, IPMA, NASA FIRMS). Em emergência liga 112. Fonte oficial: ANEPC (https://prociv.gov.pt)."},"disclaimer_en":{"type":"string","description":"Not official information: aggregated from public sources (ANEPC, IPMA, NASA FIRMS). In an emergency call 112. Official source: ANEPC (https://prociv.gov.pt)."},"documentation":{"type":"string","format":"uri"},"concelho":{"type":"object","required":["dico","name","slug","district","page"],"properties":{"dico":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"district":{"type":"string"},"page":{"type":"string","format":"uri"}}},"active_fires":{"type":"object","required":["source","official_source","read_at","stale","status","count","fires"],"properties":{"source":{"type":"string","description":"ANEPC: ocorrências publicadas pela Autoridade Nacional de Emergência e Proteção Civil, lidas por incendiosportugal.pt a cada minuto."},"official_source":{"type":"string","format":"uri","description":"Fonte oficial (ANEPC)."},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Hora da última leitura bem-sucedida da ANEPC."},"stale":{"type":"boolean","description":"true quando essa leitura tinha mais de 15 minutos ao gerar o ficheiro."},"status":{"type":"string","enum":["ok","unavailable"],"description":"unavailable: a leitura falhou (nunca quer dizer 'sem fogos')."},"count":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Número de fogos ativos; null quando a leitura falhou."},"fires":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/Fire"}},{"type":"null"}]}}},"risk":{"type":"object","required":["source","official_source","status","read_at","today","tomorrow"],"properties":{"source":{"type":"string"},"official_source":{"type":"string","format":"uri"},"status":{"type":"string","enum":["ok","unavailable"],"description":"unavailable: a leitura do IPMA falhou; today e tomorrow a null não querem então dizer 'sem nível'."},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"today":{"anyOf":[{"type":"object","required":["date","level","name","previous_run"],"properties":{"date":{"type":"string","format":"date"},"level":{"type":"integer","minimum":1,"maximum":5,"description":"Nível do IPMA: 1 reduzido … 5 máximo."},"name":{"type":"string"},"previous_run":{"type":"boolean","description":"true quando o nível de hoje é a previsão feita ontem pelo IPMA (ainda sem atualização de hoje)."}}},{"type":"null"}]},"tomorrow":{"anyOf":[{"type":"object","required":["date","level","name","previous_run"],"properties":{"date":{"type":"string","format":"date"},"level":{"type":"integer","minimum":1,"maximum":5,"description":"Nível do IPMA: 1 reduzido … 5 máximo."},"name":{"type":"string"},"previous_run":{"type":"boolean","description":"true quando o nível de hoje é a previsão feita ontem pelo IPMA (ainda sem atualização de hoje)."}}},{"type":"null"}]}}},"history":{"anyOf":[{"type":"object","description":"ICNF: perímetros das áreas ardidas desde 1975 (EFFIS nos anos que o ICNF ainda não publicou). As áreas dentro do concelho e as percentagens são cálculo nosso. null quando o ficheiro do histórico não pôde ser lido.","properties":{"source":{"type":"string"},"page":{"type":"string","format":"uri"},"years":{"type":"object"},"ha_burnt_since_2001":{"type":"integer","description":"Hectares ardidos dentro do concelho desde 2001 (cálculo nosso)."},"share_burnt_at_least_once_since_2001":{"type":"number","description":"Parte do concelho que ardeu pelo menos uma vez desde 2001 (0–1, cálculo nosso)."},"fires_100ha_plus_since_2001":{"type":"integer"},"fires_100ha_plus_since_1975":{"type":"integer"},"last_year_with_100ha_fire":{"anyOf":[{"type":"integer"},{"type":"null"}]},"rank_in_district":{"type":"object","description":"Posição no distrito pela parte do concelho que ardeu pelo menos uma vez desde 2001 (1 = a maior; cálculo nosso)."},"largest":{"type":"array","description":"As três maiores áreas ardidas dentro do concelho desde 1975.","items":{"type":"object"}}}},{"type":"null"}]},"neighbours":{"type":"array","description":"Concelhos que fazem fronteira com este.","items":{"type":"object","properties":{"concelho":{"type":"string"},"district":{"type":"string"},"page":{"type":"string","format":"uri"},"data":{"type":"string","format":"uri"}}}}}},"NotFound":{"type":"object","required":["error","message","disclaimer"],"properties":{"error":{"type":"string","enum":["not_found"]},"message":{"type":"string"},"disclaimer":{"type":"string"}}}}}}