{"openapi":"3.1.0","info":{"title":"110-loggen inntaks-API","version":"1.0.0","description":"API for 110-sentralenes fagsystemer: opprett, oppdater og avslutt brann- og redningshendelser. Alle skrivekall autentiseres med X-API-Key. Posisjoner generaliseres alltid (≥300 m) og eksakt adresse eksponeres aldri offentlig. Kontakt 110-sentralen for å få nøkkel.","contact":{"name":"110-loggen","url":"https://110loggen.no/api-dok"}},"servers":[{"url":"https://110loggen.no/api/v1","description":"Produksjon"}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}},"schemas":{"Ok":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"110-loggens interne hendelses-ID."},"status":{"type":"string","enum":["created","exists","updated","closed"]}},"required":["id","status"]},"Error":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]},"PublicIncident":{"type":"object","description":"Publisert hendelse (fra incidents_public — posisjon alltid generalisert ≥300 m).","properties":{"id":{"type":"string","format":"uuid"},"tenant_slug":{"type":"string"},"tenant_name":{"type":"string"},"incident_type_slug":{"type":"string"},"incident_type_name":{"type":"string"},"municipality_id":{"type":["string","null"],"format":"uuid","description":"null for forebyggende melding som gjelder hele distriktet."},"municipality_name":{"type":["string","null"]},"public_area":{"type":["string","null"],"description":"Offentlig områdenavn — aldri gateadresse."},"display_lat":{"type":["number","null"],"description":"Generalisert posisjon (≥300 m unøyaktighet)."},"display_lng":{"type":["number","null"]},"severity":{"type":"string","enum":["critical","major","minor","info"]},"status":{"type":"string","enum":["active","updated","closed"]},"public_text":{"type":["string","null"]},"is_retracted":{"type":"boolean","description":"true = trukket tilbake; vis retraction_note i stedet."},"retraction_note":{"type":["string","null"]},"occurred_at":{"type":"string","format":"date-time"},"published_at":{"type":"string","format":"date-time"},"closed_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"kind":{"type":"string","enum":["hendelse","forebyggende"],"description":"forebyggende = rådgivende melding uten konkret hendelse (uvær-sikring, bålforbud, skogbrannfare). Har ingen posisjon, utløper via valid_until, severity er normalt info."},"valid_until":{"type":["string","null"],"format":"date-time","description":"Kun forebyggende: når meldingen slutter å gjelde (filtreres da bort fra API-et)."}}},"PublicUpdate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","description":"update | correction | closing_summary …"},"public_text":{"type":"string"},"is_significant":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}}},"PublicUnit":{"type":"object","properties":{"kind":{"type":"string","enum":["brigade","station"]},"unit_id":{"type":"string","format":"uuid"},"name":{"type":"string"}}}}},"security":[{"ApiKeyAuth":[]}],"paths":{"/health":{"get":{"summary":"Helse-sjekk","description":"Enkel liveness-sjekk. Krever ikke autentisering.","security":[],"responses":{"200":{"description":"Tjenesten er oppe.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"service":{"type":"string","example":"110loggen-api"},"version":{"type":"string","example":"v1"}}}}}}}}},"/incidents":{"post":{"summary":"Opprett hendelse","description":"Oppretter en hendelse. Idempotent på external_id per sentral — samme ID sendt flere ganger gir ingen dublett (svar 200 «exists»).","parameters":[{"name":"X-API-Key","in":"header","required":true,"description":"API-nøkkel knyttet til én 110-sentral.","schema":{"type":"string"}},{"name":"X-Signature","in":"header","required":false,"description":"HMAC-SHA256 av rå request-body, formatert som sha256=<hex>. Påkrevd hvis nøkkelen krever signering. Signerte forespørsler må inkludere feltet «ts» (unix-sekunder, ±300 s) i body-en; hver signatur kan kun brukes én gang (replay-beskyttelse).","schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["external_id","incident_type_id","municipality_id"],"properties":{"external_id":{"type":"string","description":"Fagsystemets egen ID (idempotensnøkkel)."},"kind":{"type":"string","enum":["hendelse","forebyggende"],"default":"hendelse","description":"forebyggende: incident_type_id settes automatisk, municipality_id er valgfri (utelatt = hele distriktet), posisjon ignoreres, valid_until er PÅKREVD (frem i tid, maks 30 dager), severity default info."},"valid_until":{"type":"string","format":"date-time","description":"Kun (og påkrevd) for kind=forebyggende."},"incident_type_id":{"type":"string","format":"uuid","description":"Påkrevd for kind=hendelse; ignoreres for forebyggende."},"municipality_id":{"type":"string","format":"uuid","description":"Påkrevd for kind=hendelse; valgfri for forebyggende."},"severity":{"type":"string","enum":["critical","major","minor","info"],"default":"minor"},"public_area":{"type":"string","description":"Offentlig område — aldri gateadresse."},"public_text":{"type":"string"},"press_text":{"type":"string"},"raw_lat":{"type":"number","description":"Rå posisjon — generaliseres, vises aldri eksakt."},"raw_lng":{"type":"number"},"occurred_at":{"type":"string","format":"date-time"},"source":{"type":"string","example":"emerald"}}}}}},"responses":{"200":{"description":"Fantes fra før (idempotent).","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"110-loggens interne hendelses-ID."},"status":{"type":"string","enum":["created","exists","updated","closed"]}},"required":["id","status"]}}}},"201":{"description":"Opprettet.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"110-loggens interne hendelses-ID."},"status":{"type":"string","enum":["created","exists","updated","closed"]}},"required":["id","status"]}}}},"400":{"description":"Ugyldig data.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"401":{"description":"Ugyldig nøkkel eller signatur.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"429":{"description":"For mange forespørsler (60/min per nøkkel).","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Sekunder til neste tillatte forsøk."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}}}}},"/incidents/{external_id}":{"patch":{"summary":"Oppdater hendelse","description":"Legger en ny linje i tidslinjen og oppdaterer status/alvorlighet/område.","parameters":[{"name":"external_id","in":"path","required":true,"description":"Fagsystemets egen hendelses-ID (samme som ved opprettelse).","schema":{"type":"string"}},{"name":"X-API-Key","in":"header","required":true,"description":"API-nøkkel knyttet til én 110-sentral.","schema":{"type":"string"}},{"name":"X-Signature","in":"header","required":false,"description":"HMAC-SHA256 av rå request-body, formatert som sha256=<hex>. Påkrevd hvis nøkkelen krever signering. Signerte forespørsler må inkludere feltet «ts» (unix-sekunder, ±300 s) i body-en; hver signatur kan kun brukes én gang (replay-beskyttelse).","schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"update_text":{"type":"string","description":"Publikumstekst for oppdateringen."},"update_press_text":{"type":"string","description":"Pressetekst (vises ikke offentlig)."},"severity":{"type":"string","enum":["critical","major","minor","info"]},"public_area":{"type":"string"},"is_significant":{"type":"boolean","description":"Merk som vesentlig oppdatering (trigger varsel)."},"type":{"type":"string","description":"Oppdateringstype, f.eks. «correction» for rettelse.","default":"update"}}}}}},"responses":{"200":{"description":"Oppdatert.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"110-loggens interne hendelses-ID."},"status":{"type":"string","enum":["created","exists","updated","closed"]}},"required":["id","status"]}}}},"400":{"description":"Ugyldig data.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"401":{"description":"Ugyldig nøkkel eller signatur.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"404":{"description":"Ukjent external_id for denne sentralen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"409":{"description":"Hendelsen er allerede avsluttet.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"429":{"description":"For mange forespørsler (60/min per nøkkel).","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Sekunder til neste tillatte forsøk."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}}}}},"/incidents/{external_id}/close":{"post":{"summary":"Avslutt hendelse","description":"Avslutter hendelsen med en oppsummering. Idempotent — allerede avsluttet gir 200.","parameters":[{"name":"external_id","in":"path","required":true,"description":"Fagsystemets egen hendelses-ID (samme som ved opprettelse).","schema":{"type":"string"}},{"name":"X-API-Key","in":"header","required":true,"description":"API-nøkkel knyttet til én 110-sentral.","schema":{"type":"string"}},{"name":"X-Signature","in":"header","required":false,"description":"HMAC-SHA256 av rå request-body, formatert som sha256=<hex>. Påkrevd hvis nøkkelen krever signering. Signerte forespørsler må inkludere feltet «ts» (unix-sekunder, ±300 s) i body-en; hver signatur kan kun brukes én gang (replay-beskyttelse).","schema":{"type":"string","pattern":"^sha256=[0-9a-f]{64}$"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"summary_text":{"type":"string","description":"Avsluttende publikumsoppsummering (standard settes hvis tom)."},"summary_press_text":{"type":"string"}}}}}},"responses":{"200":{"description":"Avsluttet.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"110-loggens interne hendelses-ID."},"status":{"type":"string","enum":["created","exists","updated","closed"]}},"required":["id","status"]}}}},"401":{"description":"Ugyldig nøkkel eller signatur.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"404":{"description":"Ukjent external_id for denne sentralen.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"429":{"description":"For mange forespørsler (60/min per nøkkel).","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Sekunder til neste tillatte forsøk."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}}}}},"/public/tenants":{"get":{"summary":"Sentraler nøkkelen kan lese","description":"Lese-API for eksterne nettsider (se docs/lese-api.md). Returnerer sentralene lesenøkkelen har tilgang til. Åpen CORS; svar caches i 15 s.","parameters":[{"name":"X-API-Key","in":"header","required":true,"description":"Lesenøkkel (kind=read), scopet til én eller alle sentraler.","schema":{"type":"string"}}],"responses":{"200":{"description":"Sentraler.","content":{"application/json":{"schema":{"type":"object","properties":{"tenants":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"region":{"type":["string","null"]}}}}}}}}},"401":{"description":"Manglende/ugyldig/utløpt lesenøkkel.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"403":{"description":"Nøkkelen gir ikke tilgang til sentralen, eller Origin er ikke tillatt.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"429":{"description":"For mange forespørsler (60/min per nøkkel).","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Sekunder til neste tillatte forsøk."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}}}}},"/public/tenants/{slug}/incidents":{"get":{"summary":"Publiserte hendelser for én sentral","description":"Hendelsesliste fra det offentlige datasettet (aldri rå posisjon). Sortert nyeste først. Åpen CORS; svar caches i 15 s — poll hvert 15.–60. sekund.","parameters":[{"name":"slug","in":"path","required":true,"description":"Sentralens slug, f.eks. «more-romsdal». Hentes fra /public/tenants.","schema":{"type":"string"}},{"name":"X-API-Key","in":"header","required":true,"description":"Lesenøkkel (kind=read), scopet til én eller alle sentraler.","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string","enum":["active","all"],"default":"active"},"description":"«active» = pågående (active/updated), «all» = også avsluttede."},{"name":"kind","in":"query","schema":{"type":"string","enum":["hendelse","forebyggende"]},"description":"Filtrer på meldingsklasse. Uten filter returneres begge."},{"name":"municipality","in":"query","schema":{"type":"string"},"description":"Kommunenavn (eksakt, ikke case-sensitivt)."},{"name":"type","in":"query","schema":{"type":"string"},"description":"Hendelsestype-slug."},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Kun hendelser endret etter dette tidspunktet (updated_at ≥ since)."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Hendelser.","content":{"application/json":{"schema":{"type":"object","properties":{"tenant":{"type":"string"},"count":{"type":"integer"},"incidents":{"type":"array","items":{"type":"object","description":"Publisert hendelse (fra incidents_public — posisjon alltid generalisert ≥300 m).","properties":{"id":{"type":"string","format":"uuid"},"tenant_slug":{"type":"string"},"tenant_name":{"type":"string"},"incident_type_slug":{"type":"string"},"incident_type_name":{"type":"string"},"municipality_id":{"type":["string","null"],"format":"uuid","description":"null for forebyggende melding som gjelder hele distriktet."},"municipality_name":{"type":["string","null"]},"public_area":{"type":["string","null"],"description":"Offentlig områdenavn — aldri gateadresse."},"display_lat":{"type":["number","null"],"description":"Generalisert posisjon (≥300 m unøyaktighet)."},"display_lng":{"type":["number","null"]},"severity":{"type":"string","enum":["critical","major","minor","info"]},"status":{"type":"string","enum":["active","updated","closed"]},"public_text":{"type":["string","null"]},"is_retracted":{"type":"boolean","description":"true = trukket tilbake; vis retraction_note i stedet."},"retraction_note":{"type":["string","null"]},"occurred_at":{"type":"string","format":"date-time"},"published_at":{"type":"string","format":"date-time"},"closed_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"kind":{"type":"string","enum":["hendelse","forebyggende"],"description":"forebyggende = rådgivende melding uten konkret hendelse (uvær-sikring, bålforbud, skogbrannfare). Har ingen posisjon, utløper via valid_until, severity er normalt info."},"valid_until":{"type":["string","null"],"format":"date-time","description":"Kun forebyggende: når meldingen slutter å gjelde (filtreres da bort fra API-et)."}}}}}}}}},"401":{"description":"Manglende/ugyldig/utløpt lesenøkkel.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"403":{"description":"Nøkkelen gir ikke tilgang til sentralen, eller Origin er ikke tillatt.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"404":{"description":"Ukjent sentral.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"429":{"description":"For mange forespørsler (60/min per nøkkel).","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Sekunder til neste tillatte forsøk."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}}}}},"/public/tenants/{slug}/incidents.geojson":{"get":{"summary":"Hendelser som GeoJSON (for kart)","description":"Samme utvalg og filtre som /incidents, som GeoJSON FeatureCollection (Point-geometri av generalisert posisjon). Kan brukes direkte som kilde i MapLibre/Leaflet/Mapbox. Hendelser uten posisjon utelates, og forebyggende meldinger (kind=forebyggende) er alltid utelatt — de har ingen posisjon. properties.url peker til hendelsessiden på 110-loggen.","parameters":[{"name":"slug","in":"path","required":true,"description":"Sentralens slug, f.eks. «more-romsdal». Hentes fra /public/tenants.","schema":{"type":"string"}},{"name":"X-API-Key","in":"header","required":true,"description":"Lesenøkkel (kind=read), scopet til én eller alle sentraler.","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string","enum":["active","all"],"default":"active"},"description":"«active» = pågående (active/updated), «all» = også avsluttede."},{"name":"kind","in":"query","schema":{"type":"string","enum":["hendelse","forebyggende"]},"description":"Filtrer på meldingsklasse. Uten filter returneres begge."},{"name":"municipality","in":"query","schema":{"type":"string"},"description":"Kommunenavn (eksakt, ikke case-sensitivt)."},{"name":"type","in":"query","schema":{"type":"string"},"description":"Hendelsestype-slug."},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Kun hendelser endret etter dette tidspunktet (updated_at ≥ since)."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":200,"default":50}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"GeoJSON FeatureCollection.","content":{"application/geo+json":{"schema":{"type":"object"}}}},"401":{"description":"Manglende/ugyldig/utløpt lesenøkkel.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"403":{"description":"Nøkkelen gir ikke tilgang til sentralen, eller Origin er ikke tillatt.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"404":{"description":"Ukjent sentral.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"429":{"description":"For mange forespørsler (60/min per nøkkel).","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Sekunder til neste tillatte forsøk."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}}}}},"/public/incidents/{id}":{"get":{"summary":"Én hendelse med tidslinje og enheter","description":"Full offentlig detalj for én hendelse: hendelsen, tidslinjen (updates, eldste først) og innsatsenheter (units). Åpen CORS; svar caches i 15 s.","parameters":[{"name":"id","in":"path","required":true,"description":"110-loggens hendelses-ID (uuid), fra hendelseslisten.","schema":{"type":"string","format":"uuid"}},{"name":"X-API-Key","in":"header","required":true,"description":"Lesenøkkel (kind=read), scopet til én eller alle sentraler.","schema":{"type":"string"}}],"responses":{"200":{"description":"Hendelse med tidslinje.","content":{"application/json":{"schema":{"type":"object","properties":{"incident":{"type":"object","description":"Publisert hendelse (fra incidents_public — posisjon alltid generalisert ≥300 m).","properties":{"id":{"type":"string","format":"uuid"},"tenant_slug":{"type":"string"},"tenant_name":{"type":"string"},"incident_type_slug":{"type":"string"},"incident_type_name":{"type":"string"},"municipality_id":{"type":["string","null"],"format":"uuid","description":"null for forebyggende melding som gjelder hele distriktet."},"municipality_name":{"type":["string","null"]},"public_area":{"type":["string","null"],"description":"Offentlig områdenavn — aldri gateadresse."},"display_lat":{"type":["number","null"],"description":"Generalisert posisjon (≥300 m unøyaktighet)."},"display_lng":{"type":["number","null"]},"severity":{"type":"string","enum":["critical","major","minor","info"]},"status":{"type":"string","enum":["active","updated","closed"]},"public_text":{"type":["string","null"]},"is_retracted":{"type":"boolean","description":"true = trukket tilbake; vis retraction_note i stedet."},"retraction_note":{"type":["string","null"]},"occurred_at":{"type":"string","format":"date-time"},"published_at":{"type":"string","format":"date-time"},"closed_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"kind":{"type":"string","enum":["hendelse","forebyggende"],"description":"forebyggende = rådgivende melding uten konkret hendelse (uvær-sikring, bålforbud, skogbrannfare). Har ingen posisjon, utløper via valid_until, severity er normalt info."},"valid_until":{"type":["string","null"],"format":"date-time","description":"Kun forebyggende: når meldingen slutter å gjelde (filtreres da bort fra API-et)."}}},"updates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string","description":"update | correction | closing_summary …"},"public_text":{"type":"string"},"is_significant":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}}}},"units":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["brigade","station"]},"unit_id":{"type":"string","format":"uuid"},"name":{"type":"string"}}}}}}}}},"400":{"description":"Ugyldig hendelses-ID.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"401":{"description":"Manglende/ugyldig/utløpt lesenøkkel.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"403":{"description":"Nøkkelen gir ikke tilgang til sentralen, eller Origin er ikke tillatt.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"404":{"description":"Ukjent hendelse.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}},"429":{"description":"For mange forespørsler (60/min per nøkkel).","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Sekunder til neste tillatte forsøk."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Feilmelding (norsk)."}},"required":["error"]}}}}}}}}}